Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeScript:当库函数的返回类型未知时该怎么办_Javascript_Node.js_Typescript_Node Modules - Fatal编程技术网

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

Javascript TypeScript:当库函数的返回类型未知时该怎么办,javascript,node.js,typescript,node-modules,Javascript,Node.js,Typescript,Node Modules,我是TypeScript新手,我不知道调用库函数/方法时使用什么类型。例如,我正在Node.js项目中使用headless chrome模块 import puppeteer = require("puppeteer"); async function launchBrowser () { const browser = await puppeteer.launch(); return browser; } // In this case I do not know the

我是TypeScript新手,我不知道调用库函数/方法时使用什么类型。例如,我正在Node.js项目中使用headless 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;
}
import puppeter=require(“puppeter”);
异步函数启动浏览器(){
const browser=wait puppeter.launch();
返回浏览器;
}
//在这种情况下,我不知道启动方法的返回类型。我该怎么办?
异步函数launchBrowser():Promise{
const browser:any=wait puppeter.launch();
返回浏览器;
}

我应该使用any还是不使用type?

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

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

async function launchBrowser (): Promise<unknown>

查看新
未知
类型的文档:

在使用
未知
任何
之前,我会尝试查看您库的类型是否存在于
npm@types
中,以查看是否可以在那里找到类型信息

木偶演员似乎有几种类型:

npm安装——保存@types/puppeter

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

答:每次更新库时,你都必须更新打字文件,这是一件痛苦的事情

B.如果你对库返回的类型没有完全正确的认识,你最终可能会弄糊涂

我可能会把它放在
unknown
any
上,让事情变得更简单


编辑:更好的答案是遵循@Frank Modica的答案,并将结果包装成承诺,例如
Promise
Promise
。这至少提供了一些intellisense信息,比我之前所说的简单地将其定义为
any
unknown
要好得多。

为什么我应该使用any或unknown而不是不键入它呢?您可以肯定的一点是,会返回一个承诺(因为它是一个异步函数)。因此,如果您将其键入为
Promise
,则可以围绕返回的Promise进行强键入。例如,您的IDE将知道
launchBrowser()。然后(…)
是有效的。(由于使用了
await
,TypeScript可能会推断出其中一些,但最好是显式的)。为什么我应该使用any或unknown,而不是不使用type?显式几乎总是好的,尤其是在TypeScript中。我建议遵循@Frank Modica的回答,并将其包装成一个或多个承诺。
async function launchBrowser (): Promise<any>