質問概要
TypeScriptでエラーのあるコードにおいて、キャスト(型アサーション)しただけで
そのエラーが解決する挙動について教えてください
疑問点
以下の不十分な関数の引数をmyConfig型にキャストしたらエラーが無くなります。
理解できない点は、特定の型にキャストした結果、不完全な部分のエラーが消え
チェックが「ゆるく」なってしまう結果となるのですが
これをどのように解釈すべきか悩んでいます
該当のソースコード
TypeScript
1interface myConfig { 2 name?: string; 3 gender?: string; 4 age: number 5} 6 7function createMember(config: myConfig): void { 8 // ... 9} 10 11// エラーになる呼び出し 12createMember({ name: 'Mary', gender: 'female' }); 13 14// キャスト 15createMember({ name: 'Mary', gender: 'female' } as myConfig);
Ttsconfig
1{ 2 "compilerOptions": { 3 "target": "es6", 4 "module": "commonjs", 5 "strict": true, 6 "strictNullChecks": true, 7 "esModuleInterop": true, 8 "sourceMap": true, 9 "outDir": "./dist/js/", 10 "rootDir": "./src/ts/", 11 "lib": [ 12 "es6", 13 "dom", 14 "es2018", 15 ], 16 } 17}
環境
VS Code 1.36.1
WebPack 4.16.3
typescript 3.2.4
ts-loader 4.4.2"
eslint 5.14.0
キャストと型アサーションについて(関連質問)
出処を忘れてしまったのですが、以下のような文章を見つけました
(質問内質問になってしまうのですが・・・)
型アサーションが「型キャスト」と呼ばれない理由は、 キャストは一般的に何らかのランタイムサポートを意味するからです。 しかし、型アサーションは純粋にコンパイル時の構造体であり、 コードをどのように解析するかについてのヒントをコンパイラに提供する方法です。
キャストは便宜的なランタイムに対する型指定だが、
型アサーションは型管理におけるロジックとしての一環(一部)である
・・・という理解で良いのかな?と思っているのですが、
いずれにしてもTypeScriptのコーディングで意識する必要はないですか?

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/14 01:43
2019/07/14 02:00