实现一些接口和类似这样的类:
interface ISecondParameter {
fname: string;
lname: string;
}
interface IReturnValue {
data: number;
}
const o:IReturnValue = {
data: 5
}
interface IMyClass {
param1: string;
method(a:string, b: ISecondParameter): IReturnValue
}
class MyClass implements IMyClass {
param1
|
└──> Member 'param1' implicitly has an 'any' type.
constructor() {
}
method(a, b){
| |
| └──> Parameter 'b' implicitly has an 'any' type.
└──> Parameter 'a' implicitly has an 'any' type.
return {
data: 1
}
}
}
获取上面的错误。我可以通过添加类型即
的参数列表来消除method
中的错误
method(a: string, b: ISecondParameter) {}
然后将param1
放入构造函数中
constructor(public param1: string) {}
但是,这似乎是多余的。我已经在IMyClass
的函数签名中指定了参数类型。在TypeScript中是否需要这种冗余?
很明显,编译器理解这种关系,因为
const mc = new MyClass()
const result = mc.method('a string', {secondArg: 'john', doesNotConform: 'doe'})
会出现错误。