为什么typescript非null在与cast一起使用时不起作用?

时间:2018-03-13 19:58:15

标签: typescript

我的代码类似于下面的代码(--strictNullChecks):

interface Apple {
    id: string;
}

const applesWithoutError = [{}] as Apple[]; // No error
const applesWithError: Apple[] = [{}]; // Error: Property 'id' is missing in type '{}'type 'Apple[]'

为什么applesWithoutError未被检测为编译错误?

1 个答案:

答案 0 :(得分:5)

这是因为类型断言(a.k.a强制转换)会覆盖编译器对类型的了解。因此,如果你告诉编译器DXvar weapon = game.add.weapon(10, 'bullet'); enemies.forEachAlive(function(enemy){ if(enemy.name == 'p1'){ player.rotation = game.physics.arcade.angleBetween(player, enemy); weapon.fireAtSprite(enemy); } }); 它将忽略它所知道的真实,而支持你所说的是真的。