有没有办法防止TypeScript中出现以下类型的问题:
interface Consumer<a> { consume(value: a): void }
function consumeValue<a>(consumer: Consumer<a>, value: a) {
consumer.consume(value);
}
var consumer : Consumer<number> = { consume(value) { console.log('Number: ' + value); } }
consumeValue(consumer, 'Hey!'); // <-- this is legit, thank to the best common type resolution that really works!
答案 0 :(得分:0)
除了手动指定泛型类型参数之外,目前还没有一种直接的方法来阻止这种情况:
consumeValue<number>(consumer, 'Hey!');
此行为的更改为under discussion,作为添加联合类型的TypeScript的一部分,并作为命令行标志的separate proposal。