vscode intellisense не работает, когда типы объединения имеют символьный и строковый тип - PullRequest
0 голосов
/ 11 апреля 2019

vscode intellisense не работает, когда типы объединения имеют символьный и строковый тип.

type t = 't1' | 't2';

var a: t = 't1';
type t = 't1' | 't2' | string;

var a: t = 't1';

пример: https://imgur.com/n1Q7aNl

1 Ответ

1 голос
/ 11 апреля 2019

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
...