【发布时间】:2026-01-07 23:25:02
【问题描述】:
TypeScript 允许为可以包含任何属性的对象定义接口:
interface NumberHash {
[key: string]: number;
}
let numbers: NumberHash = {
zero: 0,
one: 1,
pi: 3.14
};
当从此类对象中查找属性时,它们会返回为 numbers,正如预期的那样。
let key = 'pi';
let pi = numbers[key];
console.log(pi.toFixed(1)); // all is well
但是,在查找未知属性时,它们仍然返回为numbers,即使它们实际上是undefined。
let key = 'foo';
let foo = numbers[key]; // `foo` becomes `undefined`
console.log(foo.toFixed(1)); // errors at runtime
上面的代码在运行时抛出TypeError,但在编译期间不会。为什么 TypeScript 在编译过程中没有捕捉到这个错误?
【问题讨论】:
标签: typescript