如何让一个变量取typescript中一些预定义的值之一?

sbtkgmzw  于 2022-11-18  发布在  TypeScript
关注(0)|答案(4)|浏览(277)

我有一个变量,比如gender。我在开头声明了它,然后在后面的代码中赋值。我想把gender的值限制为malefemale。除此之外的任何值都不应该被接受(抛出错误)。在typescript中有办法做到这一点吗?

let gender: string;

// some logic here

gender = someFunction();  //Restrict this to only accept 'male' and 'female' as valid values.
htzpubme

htzpubme1#

let gender: 'male' | 'female';
zzlelutf

zzlelutf2#

使用枚举

你能做的就是定义一个enum,并让你的函数的返回类型就是这个枚举,同样的,你的gender变量也可以是Gender,而不是string

enum Gender {male, female};

let gender: Gender;

function someFunction(): Gender {
  return Gender.male;
}

// some logic here

gender = someFunction();  //Restrict this to only accept 'male' and 'female' as valid values.

使用联合类型

正如其他人在他们的答案中提到的,你也可以使用联合类型。函数也需要返回相同的联合类型。

let gender: "male" | "female";

function someFunction(): "male" | "female" {
  return "male";
}

// some logic here

gender = someFunction();  //Restrict this to only accept 'male' and 'female' as valid values.
sgtfey8w

sgtfey8w3#

在变量或常量声明中,您可以定义它可以具有的字符串,例如

let gender: "male" | "female" | "other";

您可以对typescript接口执行相同的操作

yshpjwxd

yshpjwxd4#

对于类型脚本,我发现使用“export type ...”很方便。这是许多库中常见的方法。示例代码如下:

export type gender = | 'male' | 'female'

稍后,您可以在函数中使用它,例如:

export function myFunction(input: gender) {
  if (input === 'male') {
     // here input will only accept 'male' or 'female' string
  }
{

相关问题