
TS中的問號?與感嘆號!是什么意思
參考
巧?ES系列4:TypeScript中的問號?與感嘆號!是什么意思?
?、什么是?(問號)操作符?
在TypeScript??,有4個地?會出現問號操作符,他們分別是
1.三元運算符
//當isNumber(input)為True時返回?:之間的部分;
//isNumber(input)為Fal時返回:;之間的部分
consta=isNumber(input)?input:String(input);
2.可選參數
//這?的?表?這個參數field是?個可選參數
functiongetUr(ur:string,field?:string){
}
3.成員
//這?的?表?這個name屬性有可能不存在
classA{
name?:string
}
interfaceB{
name?:string
}
4.安全鏈式調?
//這?Error對象定義的stack是可選參數,如果這樣寫的話編譯器會提?
//出錯TS2532:Objectispossibly'undefined'.
returnnewError().('n');
//我們可以添加?操作符,當stack屬性存在時,調?。
//若stack不存在,則返回空
returnnewError().stack?.split('n');
//以上代碼等同以下代碼,感謝@dingyanhe的監督
consterr=newError();
&&('n');
?、什么是?。ǜ袊@號)操作符?
在TypeScript??有3個地?會出現感嘆號操作符,他們分別是
1.?元運算符
//!就是將之后的結果取反,?如:
//當isNumber(input)為True時返回Fal;
//isNumber(input)為Fal時返回True
consta=!isNumber(input);
2.成員
//因為接?B??name被定義為可空的值,但是實際情況是不為空的,
//那么我們就可以通過在class??使?!,重新強調了name這個不為空值
classAimplementedB{
name!:strin呂承諭 g
}
interfaceB{
name?:string
}
這?可以參考ts更嚴格的類到字組詞 屬性檢查
Typescript2.7引?了?個新的控制嚴格性的標記–strictPropertyInitialization,這個參數在中來配置
"strictNullChecks":true
"strictPropertyInitialization":true
作?
使?這個標記會確保類的每個實例屬性都會在構造函數?或使?屬性初始化器賦值。
它會明確地進?從變量到類的實例屬性的賦值檢查
舉例
classC{
foo:number;
bar="hello";
baz:boolean;
constructor(){
=42;
}
}
上述代碼,?先編輯器會報錯:
屬性“baz”沒有初始化表達式,且未在構造函數中明確賦值。ts(25沙王出裝 64)
。
其次在編譯磷酸氫鈣咀嚼片 報錯:
errorTS2564:Property'baz'hasnoinitializerandisnotdefinitelyassignedintheconstructor.
兩種都告訴開發者,應該給baz顯?賦值,但是某種情況下,在初始化的時候我們并不想賦值,更期望是undefined,?后再去賦值,此時!:就
派上?場了。
在上述代碼中屬性baz冒號之前加上!,這樣就不會報大學班級 錯了
classC{
foo:number;
bar="hello";
baz!:boolean;
constructor(){
=42;
}
}
3.強制鏈式調?
//這?Error對象定義的stack是可選參數,如果這樣寫的話編譯器會提?
//出錯TS2532:復活英文 Objectispossibly'undefined'.
newError().('n');
//我們確信這個字段100%出現,那么就可以添加!,強調這個字段?定存在
newError().stack!.split('n');
本文發布于:2023-03-20 21:22:18,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/167931853839782.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:undefined是什么意思.doc
本文 PDF 下載地址:undefined是什么意思.pdf
| 留言與評論(共有 0 條評論) |