Typescript упрощает объединения и пересечения. Одним из таких упрощений является базовый тип поглощения подтипов. string
является базовым типом всех строковых литеральных типов (таких как 't1'
и 't2'
). Это означает, что для компилятора type t = 't1' | 't2' | string;
- это просто фантастический способ написать string
.
Эта проблема GitHub описывает именно эту проблему, и предлагаемый обходной путь также должен работать для вас:
type t = 't1' | 't2' | (string & { fromT?: any});
var a: t = 'ty'; //ok
var a: t = 't2'; //ok, with autocomplete