基本上我一直在节点应用程序中使用解决方法进行空检查。
考虑一下:
import { Page } from 'puppeteer'; // Type definition
export interface IOptions {
// ... some options
waitFor: number | null;
}
const defaultOptions = {
// ... some default options
waitFor: null
};
export const load = async (pageInstance: Page, url: string, options: IOptions = defaultOptions): Promise<Page> => {
const { timeout, waitFor } = options;
if (!waitFor) {
// ... do some stuff that doesn't include Puppeteer's Page waitFor() method
} else {
try {
const workAroundWaitFor = waitFor || 0; // redundant workaround necessary for null check
return await pageInstance.waitFor(workAroundWaitFor);
} catch (error) {
throw error;
}
}
};
基本上类型Page
及其方法waitFor
接受string | number | function
但不 null
或undefined
。实际上,它不应该,我也不会想要它。但是,除非包含workAroundWaitFor
(假装提供数字回退),否则Typescript将拒绝编译我的应用程序。
这似乎是人们经常遇到的问题,但我找不到正确的方法。我是打字稿的新手,所以如果我的谷歌搜索失败了很长时间,或者我只是没有用惯用逻辑来解决这个问题,请原谅我。我正在开发的Node应用程序已经变得足够大,以至于Typescript产生了巨大的差异,出于同样的原因,我想确保我能充分利用它。