相关疑难解决方法(0)

如何使用 zod 验证字符串文字类型

我有这个类型

export type PaymentType = 'CHECK' | 'DIRECT DEPOSIT' | 'MONEY ORDER';
Run Code Online (Sandbox Code Playgroud)

我想在 zod 中验证这个文字字符串类型。目前,我将 is 作为字符串,但错误不是字符串。我不知道该放什么。

const schema = z.object({
    paymentType: z.string() // I want to validate this field
});
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试过枚举、字符串和对象。我找不到正确的答案。

typescript reactjs zod

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

枚举TypeScript字符串文字

有没有办法循环TypeScript字符串文字的值?

type category = "foo" | "bar" | "baz" | "xyzzy"

for (c in category) {
    // ... do something with each category
}
Run Code Online (Sandbox Code Playgroud)

我目前有这样的事情:

let cat: category = ...

switch (cat) {
    case "foo":
    default:
        process("foo")
        break

    case "bar":
        process("bar")
        break

    case "baz":
        process("baz")
        break

    case "xyzzy":
        process("xyzzy")
        break
}
Run Code Online (Sandbox Code Playgroud)

但我宁愿使用类似的东西

let others: category = []
for (c in category) {      // Iterate over possible category values
    if (c !== "foo") others.push(c)
}

if (others.indexOf(cat) >= 0) {
    process(cat) …
Run Code Online (Sandbox Code Playgroud)

typescript

8
推荐指数
1
解决办法
1411
查看次数

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

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

这就是我们所拥有的:

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
查看次数

从对象数组中提取字符串联合

我有以下对象

[{
    "key": "a1",
    ...
}, {
    "key": "a2",
    ...
}, ...]
Run Code Online (Sandbox Code Playgroud)

是否可以"a1" | "a2" | ...从此对象中提取联合类型?我知道可以['a1', 'a2', ...]通过使用元组 API来提取它,这里介绍了TypeScript String Union to String Array,但我无法弄清楚对象数组

typescript typescript-typings

5
推荐指数
1
解决办法
410
查看次数

如何将联合类型转换为元组类型

例如我有类型

type abc = 'a' | 'b' | 'c';
Run Code Online (Sandbox Code Playgroud)

如何使元组类型在编译时包含联合的所有元素?

type t = ['a','b', 'c'];
Run Code Online (Sandbox Code Playgroud)

typescript

4
推荐指数
1
解决办法
165
查看次数

如何迭代打字稿字符串文字?

我有这个文字类型export type names = 'n1' | 'n2' | 'n3' | 'n4' | 'n5' | 'n6';

我想知道你会如何迭代该类型?

也许您可以将该类型转换为其他类型并进行迭代?

您应该以不同的方式重新定义类型吗?

names.forEach(value => {
  console.log(value);
}); 
Run Code Online (Sandbox Code Playgroud)

typescript

2
推荐指数
1
解决办法
1041
查看次数

标签 统计

typescript ×6

reactjs ×1

typescript-typings ×1

zod ×1