Contexto / Reprodução
type Example = {
a: string,
b: number
}
let value: Example = {
a: 'hello',
b: 10,
}
// This IIFE is because typescript will narrow the type if assigned directly like
// const k: keyof Example = 'a'
const k = ((): keyof Example => 'a')()
value = {
...value,
// Obviously this is unsound
[k]: 5,
}
Isso passa mesmo no modo estrito. Link do playground .
Pergunta
Por que o typescript é inseguro aqui? Quero entender a insegurança geral para que eu possa evitar usar padrões como esse que não serão typesafe. Eu também apreciaria qualquer documentação relevante ou problemas do GitHub.