老师,您好,有一个问题想请教您一下。
代码如下:
class Person {
name: string
age: number
constructor(name: string, age: number) {
this.name = name
this.age = age
}
}
function createInstance<T>(ctor: new (...params) => T, ...args): T {
return new ctor(...args)
}
const person = createInstance<Person>(Person, 123, 20) // should be error: 类型“123”的参数不能赋给类型“string”的参数
console.log(person.name) // 123
console.log(person.name.length) // undefined
我的问题是:
1、Person的constructor方法中,name参数应该是字符型;但在createInstance<Person>(Person, 123, 20) 中传入的123是number类型,但是typescript没有提示类型错误,导致person.name.length为undefined。
2、如何给rest参数...params进行类型校验?