typescript - 使用构造函数赋值的不同行为的关键
问题描述
我正在使用构造函数赋值遇到“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"
我不明白为什么会这样,有人可以解释一下吗?
谢谢!!
解决方案
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"
推荐阅读
- ios - 在 Swift 中更改本地通知的文本
- javascript - 这个 RegExp 字符串是否需要转义?
- sql - 如何使用存储在数据库中的比较运算符比较两个表中的数据?
- c - 结构动态链表中的内存分配
- ruby-on-rails - 在 Rails 中添加属性或修改 cookie
- javascript - 无法获得输入的值
- java - 请求处理失败;嵌套异常是 org.springframework.web.client.RestClientException
- excel - 是否可以将具有相同颜色的三行组合在一起?
- datetime - 我试图找到应该使用什么运算符从时间戳中提取日期时间。Timestamp 列显示的结果类似于 0x0000000002CAE4C0
- node.js - 变量在重新运行时不刷新。如何传递变量?