2021-08-25

Ts keyPoint

unknown any void never different

(num as unknown as string).split('')
foo(p as unknown){
  if(Array.isArray(p)){
    return p.length
  }
  return p.length // error: unknown can't own property
}
 foo:()=>void //I don't care the foo return type
// confirm return error or never return
function foo():never {throw new Error('error message')}
function foo():never { while(true){}}

Cumpute

const ref = useRef();
ref.current!.name // confirm have the current property
a?.b?.c  // while a isn't null, then a.b
a ?? 10  // while a isn't null or undefined ,then 10 , false '' 0  NaN is true 
 

Operator

interface Person {name: string}
 const getValue = (obj: Person , k: keyof Person)=>{
    return obj[k]
  }
 const getValue = <T, K extends keyof T>(obj: T, k: K)=>{
    return obj[k]
  }
type typeToNumber<T>{
  [k in keyof T]: number // 遍歷 traverse
}
type Person {name: string}
typeToNumber(Person) //{name: number}

范型

 type Person2 <T> = {
    name: string,
    age: T
  }

  const p: Person2<number> = {
    name: 'guolei',
    age: 18
  }

extends

// 用來約束范性的類型 T:number是不對的因為T是一個類不是變量
 function sum<T extends number>(value: T[]): number {
    // let count = 0;
    // value.forEach(v => count += v);
    // return count;
    
    return value.reduce((a,b)=>a+b, 0)
  }

infer 變量指代 類似let i = 0

  type foo<T> = T extends { t: infer K } ? K : boolean;

  const num: foo<{t: number} > = 100;

common unit

  interface Person {
    name: string
  }
  const getValue = (obj: Person, k: keyof Person)=>{
    return obj[k]
  }

  type Person2 <T> = {
    name: string,
    age: T
  }

  const p: Person2<number> = {
    name: 'guolei',
    age: 18
  }

  function sum<T extends number>(value: T[]): number {
    // let count = 0;
    // value.forEach(v => count += v);
    // return count;
    
    return value.reduce((a,b)=>a+b, 0)
  }

  type foo<T> = T extends { t: infer K } ? K : boolean;

  const num: foo<{ t: number }> = 100;
  

  type Animal = {
    name: string,
    age: number,
    sex?: string
  }

  type Partial2<T> = {
    [p in keyof T]?: T[p]
  }

  const particalAnimal: Partial2<Animal> = { name: 'xingming' }
  
  type Record2<T extends keyof any, K> = {
    [p in T]: K
  }

  const recordAnimal: Record2<string, string> = { 'k1': 'k661' }

  type Pick2<T, K extends keyof T> = {
    [p in K]: T[p] 
  }
  
  const pickAnimal: Pick2<Animal, 'name' | 'age'> = { name: 'kkkk', age: 100 }


  
  type Exclude2<T, K> = T extends K ? never: T
  
  const excludeAnimal: Exclude2<keyof Animal, 'name' | 'sex'> = 'age';

  type Omit2<T, K> = Pick2<T, Exclude2<keyof T, K>>;
  const omitAnimal: Omit2<Animal, 'name' | 'age'> = { sex: 'nan' }

  type Require2<T> = {
    [p in keyof T]-?: T[p]
  }

  const requireAnimal: Require2<Animal> = { name: 'k', age: 1232, sex: 'man'}


  type ReturnType2<T> = T extends () => infer K ? K : any;


    type foo2 = () => number;
  
  const num2: ReturnType2<foo2> = 100
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末街望,一起剝皮案震驚了整個濱河市赊抖,隨后出現(xiàn)的幾起案子轻要,更是在濱河造成了極大的恐慌,老刑警劉巖撮慨,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡奋刽,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門艰赞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來佣谐,“玉大人,你說我怎么就攤上這事方妖∠粱辏” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長雌澄。 經(jīng)常有香客問我斋泄,道長,這世上最難降的妖魔是什么镐牺? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任炫掐,我火速辦了婚禮,結(jié)果婚禮上睬涧,老公的妹妹穿的比我還像新娘募胃。我一直安慰自己,他們只是感情好畦浓,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布痹束。 她就那樣靜靜地躺著,像睡著了一般讶请。 火紅的嫁衣襯著肌膚如雪参袱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天秽梅,我揣著相機(jī)與錄音抹蚀,去河邊找鬼。 笑死企垦,一個胖子當(dāng)著我的面吹牛环壤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播钞诡,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼郑现,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了荧降?” 一聲冷哼從身側(cè)響起接箫,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎朵诫,沒想到半個月后辛友,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡剪返,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年废累,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脱盲。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡邑滨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钱反,到底是詐尸還是另有隱情掖看,我是刑警寧澤匣距,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站哎壳,受9級特大地震影響毅待,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜耳峦,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一恩静、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蹲坷,春花似錦驶乾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至县匠,卻和暖如春风科,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背乞旦。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工贼穆, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兰粉。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓故痊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親玖姑。 傳聞我的和親對象是個殘疾皇子愕秫,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容