Я хочу создать интерфейс объекта, который заставляет использовать строку в качестве ключей, но коды компилятора TypeScript, даже если у него был тип номера в качестве ключа. Зачем?Как заставить типы ключей в интерфейсе TypeScript?
Например,
interface PriceI {
[key:string]:number;
}
var coursePrice: PriceI = {};
coursePrice["Orange"] = 100;
coursePrice["Apple"] = 200;
coursePrice[3]=200; // It should be compile error, but it pass
coursePrice[true]=300; // It's compile error
Статическая типизация в машинописном тексте является компромиссом между высокодинамичным характером javascript и жестким типом принудительного применения на большинстве строго типизированных языков. Я сам предпочел бы более строгий TS, но дизайнеры боятся отпугивать людей из JS. – Alex