我有兴趣创建一个类,每个方法都必须是一个吸气剂。这可能吗?
有效:
class Example implements AllGetters {
get alpha () {
}
get beta () {
}
}
无效:
class Example implements AllGetters {
get alpha () {
}
beta () {
}
}
答案 0 :(得分:0)
可以使用具有通用类型的Exclude
:
type AllGetters<T> = {
[k in keyof T]: Exclude<T[k], Function>
}
class A implements AllGetters<A> {
// simple properties: OK
a: string = 'foo';
b: number = 1;
// type error: type '() => number' is not assignable to type 'never'.
c(): number {
return 2;
}
// getter: OK
get d(): string {
return 'hi';
}
// getter: not OK because it returns a function
// type error: type 'Function' is not assignable to type 'never'.
get e(): Function {
return console.log;
}
}
注意事项: