相关疑难解决方法(0)

将枚举转换为值数组(将所有JSON值放入数组中)

在JavaScript中使用这个方法枚举?在我们的代码中创建枚举..

所以

var types = {
  "WHITE" : 0,
  "BLACK" : 1
}
Run Code Online (Sandbox Code Playgroud)

现在问题是当我想在任何地方创建验证时,我必须这样做;

model.validate("typesColumn", [ types.WHITE, types.BLACK ]);
Run Code Online (Sandbox Code Playgroud)

现在有一种方法可以简单地将类型中的值转换为数组,这样我就不必列出枚举的所有值吗?

model.validate("typesColumn", types.ValuesInArray]);
Run Code Online (Sandbox Code Playgroud)

编辑:我创建了一个非常简单的枚举库来生成简单的枚举npm --save-dev install simple-enum(https://www.npmjs.com/package/simple-enum)

javascript enums json node.js

8
推荐指数
3
解决办法
2万
查看次数

在没有枚举开销的情况下获取数组值的字符串文字类型的方法

在我的项目中,我需要许多字符串文字类型和各种类型的任务(如类型保护)的允许值数组。

这就是我们所拥有的:

type Animal = 'cat' | 'dog' | 'rabbit' | 'snake'
const animals: Animal[] = ['cat', 'dog', 'rabbit', 'snake']
Run Code Online (Sandbox Code Playgroud)

它可以工作,但是需要在源代码中多次列出键。

另一种方法是使用“ 获取字符串文字类型值的数组”中建议的枚举,但由于枚举的已编译代码大于数组,因此在运行时会产生开销。

我找到了另一种没有运行时开销的方法,但是我不确定它将来是否会起作用,因为它可能是一个错误。

const notWidened = <T extends string>(val: T[]) => val

const animals = notWidened(['cat', 'dog', 'rabbit', 'snake'])
type Animal = typeof animals[0]
Run Code Online (Sandbox Code Playgroud)

因此,问题是使用此代码段是否安全,或者将来会中断。有没有更好的方法来获取文字字符串类型和数组而不重复。

typescript

6
推荐指数
1
解决办法
1142
查看次数

在 yup 模式中使用 typescript 类型

可以在 yup 验证中使用打字稿类型吗?

是的,您可以:

yup.string().oneOf(['salami', 'tuna', 'cheese']);
Run Code Online (Sandbox Code Playgroud)

在我的一个组件中,我定义了这种类型:

type toppings = 'salami' | 'tuna' | 'cheese';
Run Code Online (Sandbox Code Playgroud)

我可以将这两者结合起来吗?IE:

type toppings = 'salami' | 'tuna' | 'cheese';
yup.string().oneOf(toppings); // <- how?
Run Code Online (Sandbox Code Playgroud)

typescript yup

5
推荐指数
2
解决办法
6007
查看次数

标签 统计

typescript ×2

enums ×1

javascript ×1

json ×1

node.js ×1

yup ×1