9 ポイント 投稿者 0xwof 2022-09-14 | 3件のコメント | WhatsAppで共有
  • TypeScript 4.9 は11月15日にリリース予定で、9月20日からベータテスト開始予定

    • 現在は Playground で nightly として利用可能
  • TypeScript 4.9 に satisfies キーワードが追加

  • 既存の as キーワードとは異なり、安全なアップキャストをサポート

  • 従来は、型があらかじめ定義されている場合にのみ安全なアップキャストが可能だった

  • satisfies を使うと、object の1つの key-value に対しても手軽に安全なアップキャストが可能

  • 従来

// 安全だが面倒な型定義が必要(型定義)  
const object: {  
    a: number  
    b: { a: number }  
} = {  
     a: 10,  
     b: { a: 10, b: 20 } // no error  
     // b: {} // error  
}  
// 手軽だが安全ではない(as)  
const object = {  
    a: 10,  
    b: { a: 10, b: 20 } as { a: number } // no error  
    // b: {} as { a: number } // no error (!!!)  
}  
  • satisfies
// 手軽で安全  
const object = {  
    a: 10,  
    b: { a: 10, b: 20 } satisfies { a: number } // no error  
    // b: {} satisfies { a: number } // error  
}  

3件のコメント

 
yangeok 2022-09-19

むしろ const assertion を外して satisfies を入れてほしかった、という惜しさがありますね,,

 
yangeok 2022-09-19

あっ、const assertion -> 単なる assertion です

 
kyc1682 2022-09-14

だんだん複雑になっていく感じですね(泣)