[英]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
在使用unknown
或any
之前,我會嘗試查看您的庫的類型是否存在於npm @ types
以查看類型信息是否可以位於那里。
看起來有木偶的類型:
npm install --save @types/puppeteer
至於你應該做什么,這更取決於你。 如果假設沒有可用的類型,那么你可能會陷入困境。 您可以創建自己的打字文件,並通過Typescript的聲明合並功能將其合並。 但是,我會建議反對,因為
答:每次更新庫時都需要更新打包文件,這很痛苦
B.如果你對圖書館返回的類型不完全正確,你最終可能會感到困惑
我可能會把它留在unknown
或any
使事情變得更容易。
編輯:更好的答案是遵循@Frank Modica的答案並將結果包裝在Promise中,例如Promise<any>
或Promise<unknown>
。 這提供了至少一些智能感知信息,並且比簡單地將其定義為我之前所述的any
或unknown
要好得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.