Typescriptで修飾されたプロパティの型を検証する方法はありますか? boolean
クラスのプロパティでのみ動作するプロパティデコレータが欲しいです。 (以下の例)。これは可能ですか?プロパティデコレータを使用したプロパティタイプの厳密な型チェック
(注:反映-メタデータを経由して、活字体でちょうどコンパイルタイプの警告を私はランタイムの検証をしたくない)、この程度
function booleanProperty<T extends HTMLElement>(target: T, prop: string) {
// `target` will be the class' prototype
Reflect.defineProperty(target, prop, {
get(this: T): boolean {
return this.hasAttribute(prop);
},
set(this: T, value: boolean): void {
if (value) {
this.setAttribute(prop, '');
} else {
this.removeAttribute(prop);
}
}
});
}
class MyElement extends HTMLElement {
@booleanProperty
foo: boolean;
@booleanProperty
bar: string; // TS compile error
}
customElements.define('my-element', MyElement);
ハンドブックを調べていないが、3番目の引数があることを思い出して、そこにジェネリックを定義してスコープしてもよい。ほんのちょっとした笑い、あなたのために働く希望。 – unional