A verificação de tipo genérico datilografada não está funcionando conforme o esperado

Eu fiz um teste simples:

export interface ITest1 {}
export interface ITest2 {}
export interface ITestGeneric<T> {}

export function test() {
  let p: ITestGeneric<ITest1> = {}
  let q: ITestGeneric<ITest2> = p;
}

Eu esperaria que a última linha falhasse, porque em C # tais atribuições de tipo incompatíveis não funcionam. No entanto, o texto datilografado compila isso sem queixas.

Alguém pode me dizer por que isso funciona e o que tenho que fazer para fazer isso falhar?

questionAnswers(3)

yourAnswerToTheQuestion