typescript - 条件检查后调用的打字稿类型检查函数
问题描述
我不确定如何正确表达这个问题,但这是我的设置:
const params = getParams()
if (params) {
checkParams()
}
function getParams(): {param1: string, param2: string} | null {
...
}
function checkParams() {
const {param1, param2} = params
...
}
示例中的代码是有代表性的,即顺序、范围等。含义params
可被checkParams()
函数访问。我面临的问题是我params
在checkParams()
函数中收到来自 TypeScript 的错误:
Object is possibly 'null'.ts(2531)
这是为什么?仅当is notcheckParams()
时才被调用。params
null
解决方案
Typescript 不知道这是否是调用该函数的唯一方式。
您可以使用非空断言运算符告诉 Typescript 该对象确实会被定义:
function checkParams() {
const {param1, param2} = params!;
}