抖音代運營內(nèi)容關鍵詞優(yōu)化推廣
1.TS和JS的區(qū)別?
ts?是js的超集。
- 從執(zhí)行環(huán)境上來看,瀏覽器、node.js?可以直接執(zhí)行js,但不能執(zhí)行ts;
- 編譯層面,Ts?有編譯階段,js?沒有,只有轉譯階段和lint階段;
- ts更難寫一點,但類型更安全。
- ts?代碼寫出來就是文檔,IDE可以完美提示,js本身是沒有區(qū)別的。
2. any/ never/unknow的區(qū)別
any?和? unknown是頂級類型,never?是底類型。前者可以被賦值為任何類型,后者不能
用法區(qū)別:unknown?比any?的類型檢查更嚴格。
3.?type?和interface?的區(qū)別?
假設type和interface都能用的情況下,你會用哪個?
對象相關用interface,與對象不相關用type。
- 組合方式:interface?搭配extends來實現(xiàn)繼承,type?使用&?來實現(xiàn)聯(lián)合類型;
- 擴展方式:interface?可以重復聲明用來擴展,type一個類型只能聲明一次;
- 范圍不同:type?適用于基本類型,interface?一般不行;
- 命名方式:interface?會創(chuàng)建新的類型名,type?只是創(chuàng)建類型別名,沒有創(chuàng)建新的。例如:
4.?工具類型的作用和實現(xiàn)
Partial?是部分類型,Required?是必填類型,Readonly?只讀類型,Exclude?排除類型,Extract?提取類型,Omit?排除key類型,ReturnType?返回值類型。
type Dir='東'|'西'|'南'|'北' type Dir2=Exclude<Dir,'北'> //Dir2='東'|'南'|'西' type Dir3=Extract<Dir,'北'> //Dir3='北'
ps:Exclude?用于基本類型,Omit?用于對象類型。