相关疑难解决方法(0)

使用字符串值创建枚举

以下代码可用于enum在TypeScript中创建:

enum e {
    hello = 1,
    world = 2
};
Run Code Online (Sandbox Code Playgroud)

并且可以通过以下方式访问这些值:

e.hello;
e.world;
Run Code Online (Sandbox Code Playgroud)

如何创建enum带字符串值?

enum e {
    hello = "hello", // error: cannot convert string to e
    world = "world"  // error 
};
Run Code Online (Sandbox Code Playgroud)

typescript

241
推荐指数
12
解决办法
18万
查看次数

如何键入 Typescript 数组以仅接受一组特定的值?

我正在为我无法控制的库编写类型声明文件。其中一个方法接受一个字符串数组作为参数,但这些字符串只能是非常具体的值。目前我正在将此参数输入为 a string[],但我想知道是否有办法增强它以包含特定值。

示例源(我无法更改):

Fruits(filter) {
    for (let fruit of filter.fruits)
    {
        switch(fruit)
        {
            case 'Apple':
                ...do stuff
            case 'Pear':
                ...do stuff
            default:
                console.error('Invalid Fruit');
                return false;
        }
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我当前的类型声明:

function Fruits(filter: FruitFilter): boolean;

interface FruitFilter {
    fruits: string[];
}
Run Code Online (Sandbox Code Playgroud)

在我写这个问题时,我想出了一个部分解决方案,即定义有效字符串的联合类型,然后将该字段的类型设置为该联合的数组而不是字符串数组。这给了我想要的检查,但我注意到如果你输入一个无效的字符串,它会将数组中的所有字符串标记为无效,并显示错误Type 'string' is not assignable to type 'Fruit'。有没有更好的方法来做到这一点,以便只有违规的字符串被标记为无效,或者这与我将要得到的一样接近?

部分解决方案:

function Fruits(filter: FruitFilter): boolean;

type Fruit = 'Apple' | 'Pear'

interface FruitFilter {
    fruits: Fruit[];
}
Run Code Online (Sandbox Code Playgroud)

arrays type-declaration typescript union-types

12
推荐指数
3
解决办法
8955
查看次数

如何在 TypeScript 中定义新类型

假设我有一个具有以下类型的变量:

let weekDay: 'Sun' | 'Mon' | 'Tue' | 'Wed' | 'Thu' | 'Fri' | 'Sat';
Run Code Online (Sandbox Code Playgroud)

在我的项目的不同地方我都使用这种类型,所以每次我写:

function setDay(day: 'Sun' | 'Mon' | 'Tue' | 'Wed' | 'Thu' | 'Fri' | 'Sat') { ... }
function getDay(): 'Sun' | 'Mon' | 'Tue' | 'Wed' | 'Thu' | 'Fri' | 'Sat' { ... }
Run Code Online (Sandbox Code Playgroud)

我怎样才能定义这个新类型一次,这样我就不需要每次都编写它。我尝试定义 aninterface但它会创建一个对象类型,并以此类型作为每个属性之一,但这不是我想要的

interface iWeekDay {
  day: 'Sun' | 'Mon' | 'Tue' | 'Wed' | 'Thu' | 'Fri' | 'Sat';
}
Run Code Online (Sandbox Code Playgroud)

types typescript

3
推荐指数
1
解决办法
4845
查看次数