javascript - 类型 'A | 上不存在属性 'prop' 乙'
问题描述
我正在从 url 获取数据,如果满足某个条件,数据将加载到类型 B 或其超类 A 中。当数据加载到 B 中时,打字稿无法识别其属性。我收到以下代码错误:
类型“A”上不存在属性“doB”
class A {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
doA() {
return "Hello, " + this.greeting;
}
}
class B extends A{
greeting: string;
constructor(message: string) {
super(message)
this.greeting = message;
}
doB() {
return "Hello, " + this.greeting;
}
}
let greeter: A|B = new B("world");
greeter.doB()
解决方案
这个错误是有道理的。doB
如果 var 的定义类型greeter
是A
or B
(并且A
没有定义成员),您如何确定地调用doB()
?
Greeter 是假设的 A 或 BI 类型。那么为什么打字稿不允许我调用 B 的方法?
因为如果转译器确实允许,它greeter
也可能是一个A
会破坏类型安全的实例。
具有A | B
only 类型允许您访问两者上都存在的属性。
推荐阅读
- javascript - onClick 内部的多个函数,带有三元和引用
- r - R可以在一个列表中创建一个列表,其中包含来自一个原始数据库的两个for循环
- node.js - Interaction Fails from Discord slash commands
- sql - SQL Select with JSON Column and Group By
- flutter - 如何在 Flutter 上使用 pop 获取返回值?
- routes - How to handle invalid TTL packets with flow mods? RYU OpenFlow 1.3
- npm - 尝试运行电子:npm ERR!代码 ELIFECYCLE 电子
- swift - 如何在 Swift 中提取对象数组?
- java - 在 Intellij IDEA 中安装 SymJava/Java 运算符重载支持?
- swift - 应用内购买不断崩溃试飞