面试题答案
一键面试class MyClass {
private myProperty: string;
constructor(property: string) {
this.myProperty = property;
}
// 函数重载声明
myFunction<T extends string>(arg: T): T;
myFunction<T extends number>(arg: T): T;
myFunction<T>(arg: T): T {
// 正确注解this类型
const self = this as MyClass;
if (typeof arg ==='string') {
// 这里可以根据对象属性进行处理,例如结合this.myProperty
return arg + self.myProperty as unknown as T;
} else if (typeof arg === 'number') {
// 同样可以根据对象属性处理
return arg + Number(self.myProperty) as unknown as T;
}
return arg;
}
}
使用示例:
const instance = new MyClass('suffix');
const result1 = instance.myFunction('prefix');
const result2 = instance.myFunction(10);