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);
핸드북을 살펴 보지 않았지만 세 번째 인수가 있고 그 범위를 지정하기 위해 제네릭을 정의 할 수 있습니다. 그냥 직감, 당신을 위해 일하는 희망. – unional