【问题标题】:vscode intellisense donnot work when union types have character and string type当联合类型具有字符和字符串类型时,vscode 智能感知不起作用
【发布时间】:2019-04-11 08:22:34
【问题描述】:

当联合类型有字符和字符串类型时,vscode intellisense 不起作用。

type t = 't1' | 't2';

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

var a: t = 't1';

示例:https://imgur.com/n1Q7aNl

【问题讨论】:

  • 在第二种情况下,类型 t 等价于 string(文字类型被它们的超类型吸收),那么您对 ​​IntelliSense 有什么期望?
  • @Cerberus 这个问题实际上有一个不错的解决方法,允许任何string 但有一组你想要建议的常用字符串并不罕见。

标签: typescript visual-studio-code intellisense


【解决方案1】:

Typescript 对联合和交叉点进行了简化。这些简化之一是基本类型吸收子类型。 string 是所有字符串字面量类型的基本类型(例如't1''t2')这意味着就编译器而言type t = 't1' | 't2' | string; 只是写string 的一种奇特方式。

GitHub issue 记录了这个确切的问题,建议的解决方法也应该适用于您:

type t = 't1' | 't2' | (string &  { fromT?: any});

var a: t = 'ty'; //ok
var a: t = 't2'; //ok, with autocomplete

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-23
    • 2018-06-01
    • 2021-10-27
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 2022-06-17
    相关资源
    最近更新 更多