我声明了一个类型,该类型是一个函数,它接受一个Person类型的参数并返回一个Person。
我没有指定参数是可选的,那为什么打字稿允许我向他传递不带参数的函数?
type Patcher = (key: Person) => Person;
function doSomething<T>(patcher: Patcher){
console.log('hello world');
}
doSomething<Person>(() => { // Here I pass empty parameter but typescript doesn't complain
console.log('Hello world 2');
return {
firstName: 'john',
age: 10
}
})
interface Person{
firstName: string;
age: number;
}
我正在使用上一个打字稿版本
答案 0 :(得分:0)
TypeScript不会对您大喊大叫。
如果要添加未使用的参数,会有所作为吗?
doSomething<Person>((personThatWouldNotBeUsed) => {
console.log('Hello world 2');
return {
firstName: 'john',
age: 10
}
})
您说“我期望一个以Person
作为参数,并返回一个Person
作为结果的函数”仅表示您将调用 Person
对象,您将返回的结果视为Person
对象。函数是否实际使用提供的参数完全取决于它。
TL; DR-您不能强制使用者传递的回调使用所有参数,也不能。消费者可以决定是否要使用提供的参数。