Это преднамеренная функция компилятора.Вот краткая версия той же проблемы:
interface Example {
name: string,
val: number
}
const example: Example = {
name: 'Fenton',
val: 1,
more: 'example'
}
Свойство more
не является частью интерфейса Example
, поэтому компилятор предупредит вас о том, что вы, возможно, допустили ошибку.Например, если есть необязательный элемент, который вы ввели неправильно, он поймет это для вас:
interface Example {
name: string,
val: number,
side?: string
}
const example: Example = {
name: 'Fenton',
val: 1,
sdie: 'Left' // Oops, I meant "side"
}
В тех случаях, когда вы думаете, что знаете лучше, чем компилятор, вы можете сказать, что выответственный:
interface Example {
name: string,
val: number
}
const example = {
name: 'Fenton',
val: 1,
more: 'example'
} as Example
Это позволяет добавить дополнительных участников, в то же время гарантируя, что вы не допустите ошибку, например:
// Lots of errors!
const example = {
more: 'example'
} as Example