我如何告诉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];