typeScript学习-TS类型
typeScript学习
常用的24中 TS 类型
基本类型:
number, string, boolean, symbol, null, undefined
根类型:
Object, {}
Object:除了 null 和 undefined,其他类型都可以赋值给 Object 类型,简写{}。
对象类型:
Array, object, function
枚举:
enum
其他特殊类型:
any, unknown, never, void, 元组(tuple), 可变元组
never:
// dataFlowAnalysisWithNever 方法穷尽了 DataFlow 的所有可能类型。
// 使用 never 避免出现未来扩展新的类没有对应类型的实现,目的就是写出类型绝对安全的代码。
type DataFlow = string | number
// type DataFlow = string | number | boolean
function dataFlowAnalysisWithNever(dataFlow:DataFlow){
if(typeof dataFlow === 'string'){
console.log("字符串类型:",dataFlow.length)
}else if(typeof dataFlow === 'number'){
console.log("数值类型:",dataFlow.toFixed(2))
}else{
// 当前 data 为 never 类型
let data = dataFlow
}
}
dataFlowAnalysisWithNever("abc")
dataFlowAnalysisWithNever(3.1415926)
合成类型:
联合类型, 交叉类型
联合类型:
let str:srting | number = "abc"
str=3
交叉类型:
type Obj1 = {username:string}
type Obj2 = {age:number}
let obj:Obj1={username:'zhangsan'}
let obj2:Obj2={age:23}
let obj3:Obj1 & Obj2 = {username:'wangwu',age:30}
// 错误情况
// let str2:string & number = 3
字面量数据类型:
// type A = number | string // let a:A = "abc" // type num = number // let n:num = 3
type num = 1 | 2 | 3
let n:num = 2
// 错误情况
// let n:num = 4
type increaseFlag = 0 | 1
function isStartUp(increase:increaseFlag){
if(increase){
console.log('open')
}else{
console.log('close')
}
}
isStartUp(0)
// 错误情况
// isStartUp(2)