空检查不会识别可空值由条件语句处理

时间:2018-06-08 14:47:45

标签: typescript

基本上我一直在节点应用程序中使用解决方法进行空检查。

考虑一下:

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 nullundefined。实际上,它不应该,我也不会想要它。但是,除非包含workAroundWaitFor(假装提供数字回退),否则Typescript将拒绝编译我的应用程序。

这似乎是人们经常遇到的问题,但我找不到正确的方法。我是打字稿的新手,所以如果我的谷歌搜索失败了很长时间,或者我只是没有用惯用逻辑来解决这个问题,请原谅我。我正在开发的Node应用程序已经变得足够大,以至于Typescript产生了巨大的差异,出于同样的原因,我想确保我能充分利用它。

0 个答案:

没有答案