【发布时间】:2019-09-20 17:03:29
【问题描述】:
我有一个变量可以是 A 类型或 B 类型的情况。然后使用If 我知道变量是什么类型并应用适当的响应。
我收到了 TSLINT 错误。
function checkIfItsAString(foo: String | Number): boolean {
return foo instanceof String;
}
function example2(foo: String | Number) {
if (checkIfItsAString(foo)) {
foo.charAt(5);
return;
}
}
我怎么对打字稿说,
从现在开始,这个变量的类型是“字符串”
【问题讨论】:
-
staticIsAnError真的是type predicate 吗?给minimal reproducible example。 -
@jonrsharpe 我添加了一个通用的、可复制的示例
-
所以它不是类型谓词。编译器不知道您希望该检查缩小类型。
-
@GrégoryNEUT 你可以转换它
x as ManuallyCastType但我建议使用类型谓词checkIfItsAString(foo: String | Number): foo is String这样你就不必每次都通过转换值手动告诉编译器 -
你点击我发布的链接了吗?
标签: typescript typescript-typings