ts

81 阅读1分钟

1:juejin.cn/post/684490…

any、unknow、nerver

any:任何类型都能赋值给any,编译时不进行类型检查

unknow:任何类型也都能赋值给unknow,但是会进行类型检查,在使用后时候要进行类型判断,或者类型断言。在没有对它进行类型检查之前,ubnknow类型的变量是不能进行任何操作的

1:
let myVariable: unknown = 'Hello world!';
myVariable = 42;
myVariable = true;

if (typeof myVariable === 'string') {
  console.log(myVariable.toUpperCase()); // 编译时不会出错
}

2:
let score: unknown = 87.5;
let num = Math.round(score); //error 

3:

let score: unknown = 87.5;
let num = Math.round(score as number);

4
interface Admin { name: string; privileges: string[]; } 
interface Employee { name: string; startDate: Date; } 

type UnknownEmployee = Employee | Admin;

  


nerver:永远不存在的值的类型,通常用于表示不可达代码(无限循环)、抛出异常等场景。

function throwError(message: string): never {
  throw new Error(message);
}

function infiniteLoop(): never {
  while (true) {
    // do something
  }
} 

函数

function add(x: number, y: number): number {
    return x + y
}
// 推断类型
const myAdd = function(x: number, y: number): number {
    return x + y
}
// 完整函数类型写法
const myAdd: (x: number, y: number) => number = function(x: number, y: number): number {
    return x + y
}
// 参数类型匹配即可,而不在乎参数名
const myAdd: (a: number, b: number) => number = function(x: number, y: number): number {
    return x + y
}

type interface区别

blog.csdn.net/qq_41809113…

type不但可以定义对象类型 函数类型 还可以定义联合类型、元组

而interface只能定义对象类型、函数类型

都可以实现继承,但继承方式不同,type是&,interface是extends

interface 可以声明合并,两个同名interface会合并,type不能会报错

interface

blog.csdn.net/qq_41579104…