https://www.jianshu.com/p/dd304d5cb3dc
- 類型斷言---as
把一個大的范圍斷言成小的、精確的范圍
type Method = 'GET' | 'POST'
function dd(url: string, method: Method) {
console.log('lll');
};
let option = {
url: 'https:',
method: 'POST'
}
// dd(option.url, option.method)第二個參數會報錯的,因為option.method的值是個字符串類型,而不是自己定義的Method類型
//可以用類型斷言 as 因為string類型是大的范圍,縮小到'POST'和'GET'這種小范圍的類型
dd(option.url, option.method as Method)
//當然也可以給option定義一個類型
type getOption = {
url: string,
method: Method
}
let option:getOption = {
url: 'https:',
method: 'POST'
}
dd(option.url, option.method)
- 非空類型斷言----!
表示確定某個標識符是有值的,跳過ts在編譯階段對它的檢測
function aa(value?:string){
//加上 ! 的意思是確保value一定是有值的
console.log(value!.length);
}
aa('ppp');
- 可選鏈操作符----?.
它的作用是當對象的屬性不存在時,會短路,直接返回undefined,如果存在,那么才會繼續執行。
type person = {
name: string,
age: number,
friend?: {
name: string,
age?: number
}
}
let p: person = {
name: '張三',
age: 10,
}
console.log(p.friend?.name);
- ?? 和 !!的作用
!! 將一個其他類型轉換成boolean類型,類似於Boolean()
?? 空值合並操作符,當操作符的左側是null或者undefined時,返回其右側操作數,否則返回左側操作數
let ss:string|null|undefined=undefined;
console.log(ss??'你好');
//ss??'你好' 可以給ss添加默認值 '你好' 意思就是如果 ss有值而且不是null和undefined時,ss就是上面賦給的值,如果是null或者undefined,ss的值就是默認值'你好'