问题描述
我正在使用 TypeScript,我想为 MyClass
类创建接口或类型。我希望能够键入 MyClass
的方法的输入参数,因此我实现了一个 BaseClass,它使用一些类型作为输入和输出值。
问题是,当鼠标悬停在myClass
的方法参数时,-myString
at MyClass
methodOne
,例如-,类型为any
,而它应该是 string
。
type ComplexObject1 = {
myString: string;
};
type ComplexObject2 = {
myNumber: number;
};
interface BaseClass {
methodOne: (params: ComplexObject1) => number;
methodTwo: (params: ComplexObject2) => string;
}
class MyClass implements BaseClass {
methodOne({ myString }) {
return myString.length;
}
methodTwo({ myNumber }) {
return String(myNumber);
}
}
我也尝试将 BaseClass
设置为接口或抽象类,或者使用不同语法的方法,结果相同:
type BaseClass = {
methodOne: (params: ComplexObject1) => number;
methodTwo: (params: ComplexObject2) => string;
};
或
abstract class BaseClass {
methodOne: (params: ComplexObject1) => number;
methodTwo: (params: ComplexObject2) => string;
}
或
interface BaseClass {
methodOne(params: ComplexObject1): number;
methodTwo(params: ComplexObject2): string;
}
我在这里做错了什么?
编辑:这个问题是作为答案提出的:Typescript: Use class as interface 这是一个有趣的阅读,但它没有回答如何键入每个方法的输入参数的问题。
EDIT2:这是我能想到的唯一解决方案,但并不令人满意;我期待使用抽象类或接口来实现/扩展而不是单独的函数类型:
type ComplexObject1 = {
myString: string;
};
type ComplexObject2 = {
myNumber: number;
};
type MyClassMethodOne = (params: ComplexObject1) => number;
type MyClassMethodTwo = (params: ComplexObject2) => string;
class MyClass {
methodOne: MyClassMethodOne = ({ myString }) => {
return myString.length;
};
methodTwo: MyClassMethodTwo = ({ myNumber }) => {
return String(myNumber);
};
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)