TypeScript 类型仅在编译时强制执行,在运行时不存在。鉴于此,如果我定义一个接受字符串参数的 TypeScript 函数,是否有必要执行 null 检查?出现这个问题是因为如果 API 返回 null,可能会导致运行时错误。
考虑以下代码片段:
const capitalise = (val: string) => {
// Question: Is this check redundant due to TypeScript's type checking?
if (!val) {
return '';
}
return val.toUpperCase();
};
// Assume 'name' is fetched from an API or another source that could return null
const name: string = /* fetch from API or another source */;
capitalise(name);
在这种情况下,确保 TypeScript 应用程序运行时安全的最佳实践是什么?
显然,capitalize 函数不应该处理非字符串,如果它可以从 api 获取 null,那么这是 api 的错误类型。我认为正确的解决方案是正确键入 API 方法,为其指定
null | string
类型,然后添加一个处理程序,该处理程序将调用大写(或使用大写的代码)或给出错误。处理 api 错误的最佳实践是什么是一个单独问题的主题。