これまでのところ型付きが好きですが、型アサーションをたくさん行う必要があることがわかりました。たとえば、EventTargetをHTMLAnchorElementにキャストすることは、私の一般的な使用例です。しかし、私は次のようなものを使用する必要があることを取得する:パラメータ内の型宣言型アサーション
getTabID(eventTarget: EventTarget) : string {
// without the following variable, the compiler tells me that .hash
// is not a property of EventTarget, which according to the interface, it isn't.
// So thats fine, i'll cast it to an Element
let mEventTarget: HTMLAnchorElement = <HTMLAnchorElement>eventTarget
let mTabID: string
if(mEventTarget.hash){
mTabID = mEventTarget.hash.split('#')[1]
}
return mTabID
}
しかし、これは私がJUSTタイプのアサーションを行うには、私の関数で変数を作成する必要がエラーをスローするようにコンパイラにしたくない場合はことを意味します。余計な入力は気にしませんが、これらもJSで終わり、jsファイルにバイトを無駄にしてしまいます。
私は次のことができるようにしたいと思います:
getTabID(eventTarget: EventTarget) : string {
let mTabID: string
// Do the type assertion in the parameter
if(<HTMLAnchorElement> eventTarget.hash){
mTabID = mEventTarget.hash.split('#')[1]
} else {
mTabID = mEventTarget.dataset.tabId
}
return mTabID
}
私は、ドキュメント内の良好な外観を持っていたし、SOおよびこれを行うにはどのような方法を見つけるように見えることはできません。誰でもアイデアはありますか?
'eventTarget'が常に' HTMLAnchorElement'になることを確信しているならば、 'eventTarget:HTMLAnchorElement'をパラメータに宣言し、' getTabID'の呼び出し側が 'HTMLAnchorElement'であることを強制するのはなぜですか? – Saravana
あなたは 'eventTarget:EventTarget | HTMLAnchorElement'型であり、EventTargetとHTMLAnchorElementの両方を型として使用可能にします。 – Wernerson
@Saravanaその関数を呼び出すと、 'HTMLAnchorElement'を期待する関数に' EventTarget'を渡すことができないというエラーが発生します。 @Wernerson私はそれがエラーを止めると思うが、ハックのようだ。 – C02Equinox