繁体   English   中英

TypeScript:当函数的返回类型未知时该怎么办

[英]TypeScript: what to do when return type of library function is unknown

我是TypeScript的新手,我不知道在调用库函数/方法时要使用什么类型。 例如,我在Node.js项目中使用无头chrome模块。

import puppeteer = require("puppeteer");

async function launchBrowser () {
    const browser = await puppeteer.launch();

    return browser;
}

// In this case I do not know the return type of the launch method. What should I do?

async function launchBrowser (): Promise<any> {
    const browser: any = await puppeteer.launch();

    return browser;
}

我应该使用任何一种或不使用类型吗?

假设你找不到你的库的类型,至少我会让函数返回一个东西的承诺,因为你知道它是异步的。

较新版本的TypeScript引入了unknown类型:

async function launchBrowser (): Promise<unknown>

但你也可以回复any承诺:

async function launchBrowser (): Promise<any>

查看新unknown类型的文档: https//www.typescriptlang.org/docs/handbook/release-notes/typescript-3-0.html

在使用unknownany之前,我会尝试查看您的库的类型是否存在于npm @ types以查看类型信息是否可以位于那里。

看起来有木偶的类型:

npm install --save @types/puppeteer

至于你应该做什么,这更取决于你。 如果假设没有可用的类型,那么你可能会陷入困境。 您可以创建自己的打字文件,并通过Typescript的声明合并功能将其合并。 但是,我会建议反对,因为

答:每次更新库时都需要更新打包文件,这很痛苦

B.如果你对图书馆返回的类型不完全正确,你最终可能会感到困惑

我可能会把它留在unknownany使事情变得更容易。

编辑:更好的答案是遵循@Frank Modica的答案并将结果包装在Promise中,例如Promise<any>Promise<unknown> 这提供了至少一些智能感知信息,并且比简单地将其定义为我之前所述的anyunknown要好得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM