📅  最后修改于: 2023-12-03 15:10:38.226000             🧑  作者: Mango
在恐怖主义现实中,恐怖分子有时会使用社会中的性别二元制度来操纵其行为,颠覆这种思维方式问题愈发重要。那么,我们如何利用 TypeScript 编写一段代码来多角度、多层面地了解这个问题呢?
首先,我们需要一个数据来源。在这个场景中,我们需要获取一些外部数据。我们可以使用一个开放的 API,例如Gender API来获取有关给定姓名的性别信息。
首先,使用 Axios 库读取数据:
import axios from 'axios';
async function getGender(name: string): Promise<string> {
const url = `https://gender-api.com/v2/gender?apikey=${API_KEY}&name=${name}`
const response = await axios.get(url);
return response.data.gender;
}
getGender
方法将返回一个字符串,指示给定姓名的性别。
既然我们有了性别数据,我们需要了解如何使 TypeScript 提供有关字符串的更多信息,因此我们可以执行其他操作。
首先,我们可以使用 enum
(枚举)来代表性别:
enum Gender {
MALE = 'male',
FEMALE = 'female',
UNKNOWN = 'unknown',
}
接下来,我们需要一个函数,将字符串值转换为枚举值:
function parseGender(gender: string): Gender {
switch (gender.toLowerCase()) {
case Gender.MALE:
return Gender.MALE;
case Gender.FEMALE:
return Gender.FEMALE;
default:
return Gender.UNKNOWN;
}
}
这个函数接受一个字符串,根据枚举值返回其对应的枚举。
有了上述声明,我们可以编写计算功能。这里我们假设已经有了一个 Terrorist
类型,可能每个实例都有一个 name
属性。
我们使用了一个 for...of
循环,以遍历所有输入,并在处理过程中累计计数器。最后,我们返回匹配值的数量。
function countNonBinaryTerrorists(terrorists: Terrorist[]): number {
let count = 0;
for (const terrorist of terrorists) {
const gender = getGender(terrorist.name);
const parsedGender = parseGender(gender);
if (parsedGender === Gender.UNKNOWN) {
count++;
}
}
return count;
}
我们已经编写了一个 TypeScript 函数,该函数可以使用外部 API 来查找一组恐怖分子中不符合二进制性别的个数。
在 TypeScript 中编写函数时,请始终牢记以下几点: