其他内容
ts中的类型
编译选项
webpack打包
类
类型声明
通过类型声明可以指定TS中变量(参数、形参)的类型;
指定类型后,当为变量赋值时,TS编译器会自动检查值是否符合类型声明,符合则赋值,否则报错;
简而言之,类型声明给变量设置了类型,使得变量只能存储某种类型的值;
自动类型判断
let a = 30 ,此时a默认为number类型
类型:
类型 | 例子 | 描述 |
---|---|---|
number | 1, -33, 2.5 | 任意数字 |
string | ‘hi’, “hi”, hi |
任意字符串 |
boolean | true、false | 布尔值true或false |
字面量 | 其本身 | 限制变量的值就是该字面量的值 |
any | * | 任意类型 |
unknown | * | 类型安全的any |
void | 空值(undefined) | 没有值(或undefined) |
never | 没有值 | 不能是任何值 |
object | {name:‘孙悟空’} | 任意的JS对象 |
array | [1,2,3] | 任意JS数组 |
tuple | [4,5] | 元素,TS新增类型,固定长度数组 |
enum | enum{A, B} | 枚举,TS中新增类型 |
//不可改变,有点像常量
let a: 10
a = 11
// 不可设置为出字面量以外的值
let b: 'male' | 'false'
b = 'male'
b = 'false'
b = 'hello'
// 既限定类型又给出初始值
let color: string = 'red'
color = 'blue'
let a: number;
let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
let notANumber: number = NaN;
let infinityNumber: number = Infinity;
let a: boolean;
let b = true;
let a: string;
let color: string = 'red'
color = 'blue'
表示任意类型,一个变量设置为any,相当于关闭了该变量的类型检测
any可以赋值给任意类型的变量
let d: any;
d = 'hello';
d = true;
// any可以赋值给任意类型的变量
let s: string;
s = d
实际上是一个安全类型的any
unknown 类型的变量不能赋值给任意类型的变量
let e: unknown
e = 10
e = 'hello'
e = true
let s: string;
s = e //报错
手动指定一个值的类型
s = e as string
s = <string>e
用来表示空,以函数为例,就表示没有返回值或undefined
function fn(): number | string | void {
return undefined
}
表示没有返回值
function fn2(): never {
throw new Error('报错了')
}
{} 用来指定对象中可以包含哪些属性
let b: { name: string, age?: number }
b = { name: '孙悟空', age: 18 }
b = { name: '孙悟空' }
let c: { name: string, [propName: string]: any }
c = { name: '猪八戒', a: 1, b: 2 }
设置函数结构的类型声明
let d: (a: number, b: number) => number
d = function (n1, n2): number {
return n1 + n2
}
let e: string[]
e = ['a', 'r', 'fdsf']
let g: Array<number>
g = [23, 43, 123]
元组就是固定长度的数组
由于长度固定,变化数量少,存储效率比数组高
let h: [string, number]
h = ['h', 123]
enum Gender {
Male,
Female
}
let i: { name: string, gender: Gender }
i = {
name: '孙悟空',
gender: Gender.Male // 'male'
}
console.log(i.gender === Gender.Female)
let k: myType
let l: myType