TS-1類型聲明

  • 描述對象類型:
  1. Object 范圍太廣
  2. object :Object除去基本類型之外的類型
  3. 索引簽名
  4. Record
  5. Class or Constructor
  • 索引簽名:
type A = {
[k:string] : number
}
  • Record
type Record<K extends number | string | symbol, T> = {
  [k in K] : T
}

const person: Record<string,number> = {
  name: 'frank',
  age: 12
} 
  • 帶this的函數類型聲明
type Person = {
  username: string
  age: number
  sayHi: FnWithThis
}

type FnWithThis = (this:Person,name) => void

const sayHi:FnWithThis = function(){
  console.log(this.username)
}

const person:Person = {
  username: 'frank',
  age: 12,
  sayHi: sayHi
}

// 調用必須指定this
person.sayHi()  // 'frank'
or
sayHi.call(person) // 'frank'
  • never:側重于類型推導,推到不可能出現的情況,就是never
type A = string | number | boolean

let a:A 

if(typeof a === 'string'){
  a.indexOf
}else if(typeof a === "number"){
 a.toFixed
}else if(typeof a === "boolean"){
  a.valueOf
}else{
  a // type is never
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容