-
原始类型
1.string 2.number 3.null 4.boolean 5.undefined 6.symbol
const a: string = '123'
const b: number = 123
const c:boolean = false
const d:null = null
const e:undefined = undefined
const f:Symbol = Symbol()
-
object类型
1.object对象 2.Array数组 3.function
const nfc1: object = ()=>{}
const nfc2: object = new Array
const nfc3: object = new Object
-
为对象限制类型
const obj1: { name: string,id: number } = { name:'张三',id:1 }
-
为数组限制类型
const arr1: Array<number> = [1,2,3]
const arr2: number[] = [1,2,3]
const arr3: [number,string,boolean] = [1,'2',true]
-
枚举类型
enum DataStatus{
status1 = 1,
status2 = 2,
status3 = 3
}
const data = {
name:'李四',
id:0,
status:DataStatus.status1
}
-
函数类型
function fn1(a: number,b: string): string{
return a+'-'+b
}
fn1(1,'2')
function fn2(a: number,b: string,c?: boolean): string{
return a+'-'+b
}
fn2(1,'2')
const fn3:(a: number,b: number)=>number = (a,b)=>{
return a+b
}
fn3(1,2)
-
任意类型 any
const fn3 = (a: any)=>{
return a
}
fn3(1)
fn3('1')
fn3(false)
-
隐式类型推断
let num = 1
num = 100
num = '100'
-
类型断言
const resolve = [ 100,200,300 ]
const res = resolve.find(n=>n>1)
const res1 = res as number
-
接口 interfaces
interface Todo{
id: number,
name: string,
checked?: boolean
readonly title?: string
}
const todo: Todo= { id:1,name:'哈哈' }
todo.title = '标题'
const setTodos = (todo: Todo)=>{
return todo
}
interface Toos{
[key:string]:string
}
const toos: Toos = {}
toos.name = 'hello'
toos.sex = '男'
-
泛型
将定义时无法确认的类型 在使用时用参数进行传递
const getTodos = <T,U>(list: T[],num:U): T[] =>{
return list
}
const res = getTodos<string,Number>(['1','2','3'],U)