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複製代碼
相關文章
相關標籤/搜索