簡體   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