¿Por qué TypeScript acepta un valor como tipo de datos?

¿Por qué TypeScript acepta un valor como tipo de datos?

Estos escenarios a continuación son declaraciones aceptables y no aceptables.

export class MyComponent{
        error: 'test' = 'test'; // accept
        error: 'test' = 'test1'; // not accept
        error: Boolean = true || false; // accept
        error: true | false = true; // not accept
        error: true = true; // accept
        error: true = false; // not accept
        error: Boolean; //accept
        error: true; // accept
        error: 1 = 1;   //accept
        error: 1 = 2; // not accept
    }
¿Por qué TypeScript permite un valor como tipo de datos?
¿Cómo los maneja JavaScript en tiempo de compilación?
¿Cómo difiere dereadonly yconstant?

readonly error= 'test'; vs.error: 'test' = 'test';

Respuestas a la pregunta(3)

Su respuesta a la pregunta