Typescript基础

in 前端typescript with 0 comment

数据类型

undefined 和 null 是所有类型的子类型,undefined 类型的变量,可以赋值给 number 类型的变量

数组 的表示方法

let list: number[] = [1, 2, 3]
// 或者使用数组泛型
let list: Array<number> = [1, 2, 3]

元组 表示一个已知元素数量和类型的数组

let x: [string, number]
x = ['today', 10] // ok
x = [10, 'today] // Error

枚举

enum Color {Red, Green, Blue}
let c: Color = Color.Green // 1

默认情况下,从0开始为元素编号,也可以手动指定成员的数值

enum Color {Red = 1, Green = 2, Blue = 4}
let c: Color = Color.Green // 2

我们也可以通过枚举的值得到它的名字

enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2]

console.log(colorName);  // 'Green'

void 表示没有任何类型
any 表示任何类型
unknown 类型不能赋值给除了 unknown 或 any 的其他任何类型

never 类型表示的是那些永不存在的值的类型

// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
    throw new Error(message)
}

// 推断的返回值类型为never
function fail() {
    return error("Something failed")
}

// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
    while (true) {
    }
}

never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never

类型断言的两种形式

“尖括号”语法:

let someValue: any = "this is a string"
let strLength: number = (<string>someValue).length

as 语法:

let someValue: any = "this is a string"
let strLength: number = (someValue as string).length

当你在TypeScript里使用JSX时,只有 as语法断言是被允许的。

Responses