强制在Typescript中的类中返回所有函数的类型

纳什·法坎德(Nahush Farkande)

我正在尝试在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>这将强制所有公共成员成为返回a的函数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
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在函数中强制返回类型

在TypeScript中返回类类型

Typescript:具有泛型类型的函数在返回时是否在泛型对象中强制执行?

Typescript - 在具有条件返回类型的函数中返回特定类型

在Typescript中对类的构造函数的类型引用?

在TypeScript中动态返回类构造函数

在 TypeScript 函数中输入返回的匿名类

如何强制在抽象类的所有子类中定义构造函数

如何强制MATLAB在嵌套函数调用中返回所有值?

在TypeScript中返回类(=类构造函数)的工厂函数

根据参数中的属性强制执行函数的返回类型

在C中强制转换函数指针的返回类型

TypeScript:在函数中强制使用通用推断的类型参数

Java中的泛型数组,是否将所有类型强制为同一类型?

从具有通用返回类型的crtp基类的派生类中调用函数

如果函数返回类型为void,应如何调用可变参数包中的所有函数?

如何从Java中的Main类的函数调用具有某种返回类型的函数?

PostSharp中的强制返回类型

Typescript函数,该函数从具有正确类型的数组中返回一项

在函数返回类型中推导出类类型“Pair”

模板类中模板类的函数返回类型

流类型:使用返回父类的函数中的扩展类

带有函数的 Typescript 中的映射类型

TypeScript推断类型构造函数中的回调返回类型

TypeScript:从函数中返回_.orderBy,要使用什么返回类型?

强制处理类中的所有成员变量

强制在所有基类中调用方法

使用类型为this的函数无法正确键入TypeScript类中第一个定义的方法(但之后的所有内容)

根据TypeScript中的参数在字典中定义函数的返回类型