TypeScript 类型 类型别名 类型断言

JavaScript 数据类型

ECMAScript定义了8种数据类型

7种原始类型
Boolean
Null
Undefined
Number
BigInt(ES10)
String
Symbol

1种引用类型
Object

TypeScript 类型

需要注意的几个点

  1. unitypes联合类型 值可以是多个类型的其中之一
// 变量
let unitTypsVar: Number | String | Object;
unitTypsVar = {
    
    }
console.log(unitTypsVar)

// 指定数组元素类型
let typesArr : (number | string | Object) [] = [1,2,3,'4',{
    
    }]
  1. never类型

代表函数的终点无法被执行到

let fnNever: () => never = () => {
    
    
    throw new Error('never')
}
function infiniteLoop(): never {
    
    
    while (true) {
    
    
    }
}
  1. 元组

元组Tuple 起源于函数式编程,指定数组类型和数组元素个数

let tuple : [string,number,object] = ['a',1,{
    
    }]
  1. 函数类型

定义函数类型,首先定义形参列表,然后用=>定义函数返回值类型

let sumCust: (x: number, y?: number) => number;
sumCust = function sum(x: number, y?: number) {
    
    
    typeof y === "number" && (x += y)
    return x
}

类型别名

使用type来定义类型别名,方便简化代码,方便类型复用

function sum(x: number, y: number): number {
    
    
    return x + y
}
// 抽取类型
type sumType = (a: number, b: number) => number
// 复用
const sum2: sumType = sum

sum2(1, 2)

类型断言

有时候我们需要在还不确定类型的时候访问类型的属性和方法,但这个时候编译器往往会报错

类型断言就是告诉编译器,你比它更了解这个类型,而且它不应该因此而发生错误

// 类型断言
type inputType = string | number;
function getLength(input: inputType): number {
    
    
    return (input as string).length ? (input as string).length : (input as number).toString().length
    // 另一种断言写法
    // return (<string>input).length ? (<string>input).length : (<number>input).toString().length
}

getLength('a')
getLength(123)

猜你喜欢

转载自blog.csdn.net/qq_41109610/article/details/115033429