允许与typescript中数组中的项匹配的任何值

允许与typescript中数组中的项匹配的任何值,typescript,Typescript,我是typescript新手,目前我知道我可以做到: var display: 'block' | 'inline' | 'flex' | 'inline-flex' = 'block'; 因此,如果我尝试为变量display分配与上述任何选项都不匹配的任何值,则在代码的后面部分将显示错误 但是,如果我在代码前面以数组的形式编写了这些选项,该怎么办?例如: const displayOptions = ['block', 'inline', 'flex', 'inline-flex']; va

我是typescript新手,目前我知道我可以做到:

var display: 'block' | 'inline' | 'flex' | 'inline-flex' = 'block';
因此,如果我尝试为变量
display
分配与上述任何选项都不匹配的任何值,则在代码的后面部分将显示错误

但是,如果我在代码前面以数组的形式编写了这些选项,该怎么办?例如:

const displayOptions = ['block', 'inline', 'flex', 'inline-flex'];
var display: /* now what do I write here? */ = 'block';

我不想使用按位OR运算符重写选项,因为这样每当我需要添加或删除选项时,我都必须重新更新这两行中的选项。

听起来像是在寻找
枚举

enum Displays {
    Block = 'block',
    Inline = 'inline',
    Flex = 'flex',
    InlineFlex = 'inline-flex'

}

const display1: Displays = Displays.Block; // OK
const display2: Displays = 'block'; // error
const display3: Displays = 'something else'; // error

听起来您正在寻找一个
枚举

enum Displays {
    Block = 'block',
    Inline = 'inline',
    Flex = 'flex',
    InlineFlex = 'inline-flex'

}

const display1: Displays = Displays.Block; // OK
const display2: Displays = 'block'; // error
const display3: Displays = 'something else'; // error

您可以利用const上下文:

const displayOptions = ['block', 'inline', 'flex', 'inline-flex'] as const;
type Options = typeof displayOptions[number];

let display: Options = 'block';    
let display2: Options = ''; // error

您可以使用const上下文:

const displayOptions = ['block', 'inline', 'flex', 'inline-flex'] as const;
type Options = typeof displayOptions[number];

let display: Options = 'block';    
let display2: Options = ''; // error
constdisplayoptions=['block','inline','flex','inline flex']作为常量;
类型值of=T[keyof T];
变量显示:ValueOf='block';
常量显示选项=['block','inline','flex','inline flex']作为常量;
类型值of=T[keyof T];
变量显示:ValueOf='block';