【问题标题】:How do I tell TypeScript that you are guaranteed to have a valid return value in `find`?我如何告诉 TypeScript 你在 `find` 中保证有一个有效的返回值?
【发布时间】:2019-05-07 02:06:14
【问题描述】:

例如:

const map = { small: 1, large: 2 };
const closestSize = ['small', 'large'].find((size) => !!map[size]); 

// errors Type 'undefined' cannot be used as an index type.ts(2538) but we know that either small or large will be found

return map[closestSize];

【问题讨论】:

标签: typescript


【解决方案1】:

find函数的定义是:

find(predicate: (value: T, index: number, obj: T[]) => boolean, thisArg?: any): T | undefined;

签名表明该值可以是未定义的。如果您想告诉编译器该值不会未定义,只需在末尾添加!

const closestSize = ['small', 'large'].find((size) => !!map[size])!; 

return map[closestSize]!;

【讨论】:

  • 试过了,我得到了Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'.ts(2322)
  • 解决了!!但稍作修改。我必须做return map[closestSize!]!; 请注意最后的另一个!,它是指定函数签名的地图也返回一个非空
猜你喜欢
  • 2019-04-11
  • 1970-01-01
  • 2013-11-25
  • 2021-10-22
  • 2013-08-30
  • 2020-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多