cript - TypeAssertion & TypeAnnotation
4736 ワード
タイプスクリプトのタイプ定義 Typescript
はコンパイルを行い、ユーザーにタイプのエラーを検証します.これはコード自体の動作に影響しません.変数のタイプを決定するには、2つの方法があります.
TypeAssertion
TypeAnnotation
TypeAssertion
タイプスクリプトはタイプを推定します.データ型が特定できない場合、データ型を
any
またはunknown
と推定することができ、開発者はこれらの推定を無視してタイプを指定することができる.のように思われる
내가 너보다 타입에 대해서 더 잘 알고, 나의 주장에 대해 의심하지마!
と言ったように.let doodream = {};
doodream.id = 123; // error
doodream.name = "doo" // error
上記のコードは、オブジェクトにPropertyが定義されていないため、タイプスクリプトでこのエラーが発生します.これらのエラーには、次のものが含まれます.
interface Person {
id: number;
name: string;
}
let doodream = {} as Person;
doodream.id = 123;
doodream.name = "doo";
前述したように、Personタイプは単純にas
と断言される.これにより、タイプスクリプトは、オブジェクトが「Person」というインタフェースタイプであると判断し、タイプ推定を可能にする.¥¥¥¥¥¥¥¥¥¥¥¥¥¥
げんかい
タイプテーブル名は、前述したように、タイプ推論を可能にする機能にすぎません.すなわち、自動完了のみが許可されます.
interface Person {
id: number;
name: string;
}
let doodream = {} as Person;
//doodream.id = 123;
//doodream.name = "doo";
上記のコードでは、ユーザがタイプテーブル名を指定しても、実際にオブジェクトプロファイルを定義していない場合に問題は発生しません.as
は、ユーザーの立場でこれらの問題に注意する必要があるため、コンパイラはこれらの問題を教えてくれません.Type annotation
この式は、タイプを明確に指定します.変数の後ろには
<>
があります.interface Person {
id: number;
name: string;
}
let doodream : Person = {
// id: 123,
// name: "doo",
}
type assertionとは異なり、属性タイプは明示的に指定され、属性が定義されていない場合はエラー文が表示されます.このような
버그 구멍
を阻止します.❗しかしtype assertion自体は悪くない.前述したように、開発者がタイプスクリプトのタイプ推論よりも変数についてより詳細なタイプ説明を持っている場合、タイプ断言をasキーワードとして使用できます.ただし、継承関係ではなくまったく異なるタイプを使用しようとすると、エラーが発生します.いずれの場合も、二重タイプの断言を試みなければなりません.これが最後の方法だと思います.
Reference
この問題について(cript - TypeAssertion & TypeAnnotation), 我々は、より多くの情報をここで見つけました https://velog.io/@doodream/Typescript-TypeAssertion-TypeAnnotationテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol