我正在努力理解将字段定义为string | undefined
和之间的区别string?
我们当前的代码使用像这样的类型定义:
class Foo {
public bar: string | undefined;
}
通过TSLint运行此代码时,它会引起注意并抱怨它:
考虑使用“?” 声明此属性的语法,而不是其类型的“未定义”。
现在的问题是,使用?
语法的方式是否会完全相同,还是我遗漏了细微的差异?
class Foo {
public bar?: string;
}
因此,我们string | undefined
现在如何使用类型就在这种检查中:
if (foo.bar) {..}
这会改变吗?
看来打字稿文档对可选类型进行了更深入的探讨,但对于类在上下文中的表现却没有真正的了解。
bar?: string
是可选属性,而bar: string | undefined
为必需属性之一:
interface Foo {
prop?: string
}
interface Foo2 {
prop: string | undefined
}
const foo: Foo = {} // ok
const foo2: Foo2 = {} // error
关于这种情况:
if (foo.bar) {..}
两种方法都可以(包括Intellisense可以以任何一种方式工作)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句