@sanex3339

Typescript: почему возникает ошибка при попытке обращения к элементу объекта, который описан интерфейсом?

Есть код вида
interface Interface {
	[id: string]: Interface2;
}

interface Interface2 {
	[id: string]: string|boolean;
}

var a:Interface = {
	abc: {
		a: 'a',
		b: 'b',
		c: 'c'
	},
	cde: {
		c: 'c',
		d: 'd',
		e: true
	}
};

if (a.cde.e) {
	console.log(1);
} else {
	console.log(2);
}

if (a['cde']['e']) {
	console.log(1);
} else {
	console.log(2);
}


В коде внизу можно увидеть 2 условия: в 1-м компилятор ругается
Property 'cde' does not exist on type 'Interface'.

Во втором условии - нет.

Почему он ругается в 1-м условии? Как сделать так, что бы не ругался?

Проверить можно тут www.typescriptlang.org/Playground
  • Вопрос задан
  • 251 просмотр
Решения вопроса 1
S-ed
@S-ed
Комбайнёр
https://github.com/Microsoft/TypeScript/issues/4345 клеймо "By Design"
По крайней мере, он проверяет тип.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы