主题
类型
类型声明
ts
let a:boolean = true
// a = "1"
console.log(a);
let b:string
b = "1"
console.log(b);
let c
c = 1
console.log(c);
function add(num1:number,num2:number):number{
return num1+num2
}
console.log(add(1,2))
类型
ts
// boolean
let a: boolean = true
// a = "1"
console.log(a);
// string
let b: string
b = "1"
console.log(b);
// number
let c: number
c = 1
console.log(c);
// 字面量进行类型声明
let d: 1
d = 1
console.log(d);
// | 标识多个类型
let dd: boolean | string
dd = true
dd = "true666"
console.log(dd);
// any:任意类型
let e: any
let ee // 隐式的any
e = true
e = 1
e = "666"
console.log(e);
// unknown:未知类型
let f: unknown
f = true
f = 1
f = "666"
console.log(f);
// any和unknown区别
let s: string
s = e // any类型可赋值给任意变量
// s = f // unknown则会报错 => 一个类型安全的any
// 解决unknown提示问题
// 法1:
if (typeof f === 'string') {
s = f
}
// 法2:类型断言:告诉编译器变量的实际类型
s = f as string // 语法1
s = <string>f // 语法2
console.log(s);
function fn(): number | string {
return 11
}
// void:无返回值
function fn2(): void { }
// never:表示永远不会返回结果
function fn3(): never {
throw new Error('报错了...')
}
// object:表示一个js对象
let g: object
g = {}
g = function () { }
console.log(g);
/**
* {}:指定对象中可以包含哪些属性
* {属性名1:属性值1,属性名2:属性值2 ...}
* 属性名后面加上? 表示该属性是可选的
*/
let gg: { name: string, age?: number }
gg = { name: '小郑', age: 1 }
gg = { name: '小郑' }
console.log(gg);
let ggg: { name: string, [propName: string]: any } // [propName: string]: any => 任意类型的属性
ggg = { name: '小郑', age: 1, sex: '男' }
console.log(ggg);
// 定义函数类型
let gggg: (a: number, b: number) => number
gggg = function (p1, p2): number {
return p1 + p2
}
// array
let h: string[] // 语法1
let hh: number[]
let hhh: Array<number> // 语法2
h = ['a', 'b']
console.log(h);
// 元组:固定长度的数组
let i: [string, string]
i = ['a', 'c']
console.log(i);
// 枚举
enum Sex {
man = 0,
men = 1
}
// let j: { name: string, sex: 0 | 1 | 2 }
let j: { name: string, sex: Sex }
j = {
name: '小郑',
sex: Sex.man
}
console.log(j);
console.log(j.sex === Sex.man);
// &:表示同时满足条件
let k: { name: string } & { age: number }
k = { name: '小郑', age: 18 }
// 类型别名 => 简化类型的使用
// type myType = string
type myType = 1 | 2 | 3
let l: 1 | 2 | 3
let m: myType
类型断言
ts
function fn(value: number | string) {
let result: number
// 强转转换类型
result = (<string>value).length
// 类型断言
result = (value as string).length
}