TypeScript-未定义类型不能分配给ICustomType类型

时间:2019-12-17 21:16:41

标签: node.js typescript types

我是TypeScript的新手,并试图了解什么是在我的代码中解决这种情况的最佳方法。

我的系统中有一组具有自定义类型的对象,并且我使用Array.find方法来获取其中之一。但是,我收到一个编译错误,提示Type 'undefined' is not assignable to type IConfig

这是代码示例-

const config: IConfig = CONFIGS.find(({ code }) => code === 'default');
// Type 'undefined' is not assignable to type IConfig

我尝试添加undefined作为可能的类型,但随后在使用此对象Object is possibly 'undefined'的下一行出现错误,例如-

const config: IConfig | undefined = CONFIGS.find(({ code }) => code === 'default');

// Object is possibly 'undefined'
if (config.foo) {
   return 'bar';
}

解决此类类型问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

如果数组中的任何内容均未通过回调测试,则

.find将返回undefined。如果您确定数组中存在default代码,请使用非null断言运算符:

const config: IConfig = CONFIGS.find(({ code }) => code === 'default')!;
//                                                                    ^

(如果不确定数组中是否存在该警告,则会出现警告,提示您在尝试访问该属性之前提示您明确测试该项目是否存在,否则有时会收到运行时错误:

const config: IConfig = CONFIGS.find(({ code }) => code === 'default');

if (!config) {
  return 'No match found';
}
if (config.foo) {
   return 'bar';
}