![](/img/trans.png)
[英]Is it possible to force that all class public methods return the same type with typescript?
[英]Force return type of all functions in a class in Typescript
我正在嘗試在Typescript中構建一個類,其中所有函數都必須返回一個Promise,而無需明確聲明每個函數的返回類型。換句話說,向該類添加一個非異步函數應該拋出一個錯誤,即
class myClass {
errfunc() { // This should throw a compiler error
return 1;
}
correctfunc() {
return new Promise((res) => res('success')) // This should work correctly
}
}
我嘗試了以下
interface PromiseDictionary {
[key: string]: () => Promise<any>;
}
class myClass implements PromiseDictionary {
a() {
return new Promise(res => res('success'))
};
}
但這會引發以下錯誤:
Class 'myClass' incorrectly implements interface 'PromiseDictionary'.
Index signature is missing in type 'myClass'.`
如何才能做到這一點?
您可以說該類使用() => Promise<any>
當前類的鍵來實現記錄,這將強制所有公共成員成為返回Promise
函數:
class myClass implements Record<keyof myClass, () => Promise<unknown>> {
errfunc() { // This should throw a compiler error
return 1;
}
correctfunc() {
return new Promise((res) => res('success')) // This should work correctly
}
}
這將強制所有功能都沒有參數,以允許具有參數的功能可以使用
class myClass implements Record<keyof myClass, (...a: never[]) => Promise<unknown>> {
errfunc() { // This should throw a compiler error
return 1;
}
correctfunc(a: string) {
return new Promise((res) => res('success')) // This should work correctly
}
}
您應該為方法添加一個promise的返回類型
class myClass {
async errfunc(): Promise<appropriate_data_type/any> => { // This should throw a compiler error
return 1;
}
async correctfunc(): Promise<appropriate_data_type/any> {
return new Promise((res) => res('success')) // This should work correctly
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.