TypeScript的六个类型

1、元组

元组能够看做是数组的拓展,表示已知元素数量和类型的数组。也就是说已知数组中每个位置上元素的类型数组

let tuple: [string, number, boolean];
tuple = ["a", 2, false];
tuple = [2, "a", false]; // error 不能将类型“number”分配给类型“string”。 不能将类型“string”分配给类型“number”。
tuple = ["a", 2]; // error Property '2' is missing in type '[string, number]' but required in type '[string, number, boolean]'复制代码

2、枚举

枚举能够看做是给数值赋予名字bash

enum Roles {
  SUPER_ADMIN = 0,
  ADMIN = 1,
  USER = 2
}

console.log(Roles.SUPER_ADMIN) //0

也能够经过值来获取到名字
console.log(Roles[1]) // ADMIN 
复制代码

3、Any

Any表示赋予任何值均可以,即任意类型函数

let value: any;
value = 123;
value = "abc";
value = false复制代码

也能够在定义数组类型时使用 any 来指定数组中的元素类型为任意类型
ui

const array: any[] = [1, "a", true];复制代码

4、void

void表示没有任意类型,与Any相反spa

const consoleText = (text: string): void => {
  console.log(text);
};  //没有返回值复制代码

void类型的变量只能赋值为undefined和null,其余类型不能赋值给void类型的变量code

5、never

never指那些永远不存在的值的类型,它是那些总会抛出异常或根本不会有返回值的函数表达式的返回值类型。get

const errorFunc = (message: string): never => {
  throw new Error(message);
};复制代码
const infiniteFunc = (): never => {
  while (true) {}
};复制代码

6、unknown

nuknown表示未知类型string

拓展

交叉类型

交叉类型就是取多个类型的并集,使用 & 符号定义,被&符连接的多个类型构成一个交叉类型,
表示这个类型同时具有这几个链接起来的类型的特色
const merge = <T, U>(arg1: T, arg2: U): T & U =>{  let res = <T & U > {};  res = Object.assign(arg1, arg2)  return res}const info1 = {  name: 'Lison'}const info2 = {  age: 18}const ListInfo = merge(info1,info2)console.log(ListInfo) // Object复制代码

联合类型

联合类型实际是几个类型的结合,可是和交叉类型不一样,联合类型是要求只要符合联合类型中任意一种类型便可,它使用 | 符号定义。当咱们的程序具备多样性,元素类型不惟一时,即便用联合类型。
it

const getLength = (content: string|number): number => {  if(typeof content === "string"){    return content.length  }else{    return content.toString().length  }}console.log(getLength("abcd")) //4console.log(getLength(1234)) //4复制代码
相关文章
相关标签/搜索