使用构造函数分配的不同行为的键

时间:2018-11-26 11:00:51

标签: typescript constructor keyof

我正在使用构造函数分配来体验“ keyof”的不同行为...

Here is the code

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"

我不明白为什么会这样,有人可以向我解释吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

Class2中,它们是公开的(默认设置),在Class1中,它们是私有的。

要使它们具有可比性(即证明与构造函数分配无关),请将私有访问修饰符添加到Class2(或更改Class1以使其成为public)。

class Class2 {
    private a: number;
    private b: string;

    constructor() {
    }

    method1() {
        console.log("method1");
    }
}

如果ab成员是私人成员,您将获得:

type Class2Props = keyof Class2;  // "method1"