我如何告诉TypeScript保证在“find”中有一个有效的返回值?

我如何告诉TypeScript保证在“find”中有一个有效的返回值?,typescript,Typescript,例: find函数的定义是: find(谓词:(值:T,索引:number,对象:T[])=>boolean,thisArg?:any):T |未定义; 签名表明该值可以是未定义的。如果您想告诉编译器该值不会未定义,只需添加结束: const closestSize=['small'、'large']。查找((size)=>!!映射[size])!; 或 returnmap[closestSize]!; 映射[closestSize!]的可能重复项。或常量closestSize=['smal

例:


find
函数的定义是:

find(谓词:(值:T,索引:number,对象:T[])=>boolean,thisArg?:any):T |未定义;
签名表明该值可以是未定义的。如果您想告诉编译器该值不会未定义,只需添加
结束:

const closestSize=['small'、'large']。查找((size)=>!!映射[size])!;

returnmap[closestSize]!;

映射[closestSize!]的可能重复项。
常量closestSize=['small','large']。查找((size)=>!!映射[size])
@TitianCernicova Dragomir尝试了这个方法,我发现
类型'number | undefined'不能分配给类型'number'。类型“undefined”不能分配给类型“number”。ts(2322)
@Toli这两个版本都有效:您注意到了
,对吗?我提到它是因为它很容易错过..试过了,我发现
类型'number | undefined'不可分配给类型'number'。类型“undefined”不能分配给类型“number”。ts(2322)
解决了它!!但稍加修改。我必须做
returnmap[closestSize!]注意另一个
结尾处,用于向函数签名指定映射也返回非null
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];