ts里面的 ! 和 ? 還有 as以及各種符號的意義以及使用


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的值就是默認值'你好'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM