有没有办法防止在TypeScript中发生“最常见类型”分辨率?

时间:2014-10-03 16:04:07

标签: typescript

有没有办法防止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!

1 个答案:

答案 0 :(得分:0)

除了手动指定泛型类型参数之外,目前还没有一种直接的方法来阻止这种情况:

consumeValue<number>(consumer, 'Hey!');

此行为的更改为under discussion,作为添加联合类型的TypeScript的一部分,并作为命令行标志的separate proposal