我正在使用构造函数分配来体验“ keyof”的不同行为...
class Class1 {
constructor(private a: number, private b: string) {
}
method1() {
console.log("method1");
}
}
class Class2 {
a: number;
b: string;
constructor() {
}
method1() {
console.log("method1");
}
}
type Cet1Props = keyof Class1; // "method1"
type Class2Props = keyof Class2; // "a" | "b" | "method1"
我不明白为什么会这样,有人可以向我解释吗?
谢谢!
答案 0 :(得分:1)
在Class2
中,它们是公开的(默认设置),在Class1
中,它们是私有的。
要使它们具有可比性(即证明与构造函数分配无关),请将私有访问修饰符添加到Class2
(或更改Class1
以使其成为public
)。
class Class2 {
private a: number;
private b: string;
constructor() {
}
method1() {
console.log("method1");
}
}
如果a
和b
成员是私人成员,您将获得:
type Class2Props = keyof Class2; // "method1"