面试题-技术: ts(typescript)

  1. 谈谈你对ts的看法

如果你使用JavaScript很少有类型相关的困扰和问题,那TypeScript其实对你就没有太多的帮助。我学TypeScript的目的很简单,就是为了能够在阅读开源代码时。尤其是当开源库中有*.d.ts这种类型声明文件时,我能否明白这些接口的含义。

// enum枚举类型:为接口字段的数值赋予友好的名字
enum examState {
  loading = 0, // 未出结果
  pass = 1, // 通过
  notPass = 2, // 未通过
  null = 3 // 缺考
}
console.log(examState.notPass)
// 一: 接口是可以给函数的参数定义类型
// 1.必传属性 2. 可选属性(变量用 const,若属性用readonly。) 3.只读属性 (第一次赋值后不可被修改) 4.额外的属性检查
interface rankingObj {
  pageNum: number
  numPerPage: number
  rankYear: string
  rankMonth: string
  userName: string
  organNbr: string
  rankParentType: string
  // [propName: string]: any
}
async function getData(obj: rankingObj) {
  obj.rankYear = obj.rankYear ? obj.rankYear : ''
  obj.rankMonth = obj.rankMonth ? obj.rankMonth : ''
  obj.userName = obj.userName ? obj.userName : ''
  console.log(obj)
}
// 接口可选属性

interface SquareConfig {
    color?: string;
    width?: number;
}
// 接口只读属性
interface Zerb {
  readonly id: number
  name: string
  age?: number //可选属性
  [propName: string]: any  //这里设置的是任意类型
}

let zerb: Zerb = {
  id: 89757,
  name: 'Tom',
  gender: 'male'     //对任意类型进行赋值
}

zerb.id = 9527 //id是只读的,所以这里会报错

  1. ts常用数据类型
1.1 布尔值
let isTrue: boolean = false;
console.log(isTrue);
1.2 数字
let age: number = 26;
console.log(age);
1.3 字符串
let name: string = "bob";
1.4 数组
let list: number[] = [1, 2, 3];
1.5 Any
// 还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库
let notSure: any = 4;
notSure = "maybe a string instead";
1.6 Void
// 一个函数没有返回值时,你通常会见到其返回值类型是 void
function warnUser(): void {
alert("This is my warning message");
}
// 注意:声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null
let unusable: void = undefined;
1.7 Null 和 Undefined
和 void相似,它们的本身的类型用处不是很大:
let n: null = null;
1.8 元组 Tuple
// 元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。
let tup: [number, string] = [27, "jianan"];
console.log(tup);
console.log(tup[0], tup[1]);
  1. TypeScript 中类型 any,void,unknown,never之间的区别

any是任意类型,是ts的默认类型
void 表示无任何类型,正好与 any 相反,没有类型,如果是函数则应没有返回值或者返回
unknown 表示未知类型,写代码时还未知会得到怎样的数据类型,如接口返回的数据
它能被赋值为任何类型,但不能被赋值给除了 any 和 unknown 之外的其他类型
nerver表示永不存在的值的类型,变量也可以申明为 never 类型永远不能给它赋值,且never 是所有类型的子类型

你可能感兴趣的:(js,typescript,javascript,前端)