タイプIの状態に対してある種の検査された表現が必要です。 const
のように(右辺がその型でない場合はクラッシュしますが)一時的な変数はありません - 好ましくはインラインで、「型アサーション」(型キャスト)は現在どのように動作しているのでしょうか。コンパイラに値の型を知らせ、それをチェックする方法を簡潔にする方法は?
Edit1:これは明らかに実際のコードではありません。厳密には、私が書いた位置でタイプチェックを強制することです。機能を変更しないでください。固定してください。私は関数/ vars/lets/consts/interfacesで型を使う方法を知っていますが、それはこの問題に関するものではありません。
EDIT2:もう一つの例:
const input: any = 'SomeRealValueB'; // this comes from unsafe place, can't be safely typed without runtime checks which I really don't want to do
//^that can't be changed
type SomeRealType = 'SomeRealValueA' | 'SomeRealValueB';
// my current solution I am not happy with (unnecessary variable and line of code)
const someRealValueA: SomeRealType = 'SomeRealValueA';
if(input == someRealValueA) { console.log('y'); }
else { console.log('n'); }
// why I want it typed - consider that after refactoring 'SomeRealValueB' gets changed to 'SomeRealValueC', I want compiler to chceck that for me
クラッシュを意味するのではなく、TypeScriptのコンパイルエラーです(同じものではありません)。また、あなたは 'use'関数であなたの制約を定義できないのでしょうか? –
@ E_net4ああ、もちろん、コンパイルエラーだった。この例では、型の変更を妨げるものは何もありませんが、実際のコードでは何かがあります。機能を固定してください。 (更新された質問。) – monnef