我正在使用Faker和TypeScript,并且正在努力弄清楚如何以一种可以在后续调用中使用的方式从Faker中捕获返回的性别。这是我想做的:
const gender = faker.name.gender(true); // <-- returns a string
const firstName = faker.name.firstName(gender);
const middleName = faker.name.middleName(gender);
字符串
不幸的是,Faker的faker.name.firstName(gender)
采用GenderType
枚举值,而不是字符串,即使你可以像faker.name.firstName('male')
一样使用它。这可以工作,但使用变量gender
不起作用。
我是不是漏掉了什么?
2条答案
按热度按时间ui7jx7zq1#
faker.name.firstName
的类型为(gender?: GenderType) => string
,其中type GenderType = 'female' | 'male' | 0 | 1;
*。然而,
faker.name.gender
的类型是(binary?: boolean = false) => string
。它可以返回相当广泛的值:字符串
毫无帮助的是,即使你将
binary
设置为true
,它返回的是"Female"
或"Male"
,这两个都不是GenderType
:型
虽然有一些规范化,所以这在JavaScript中有效(但不是TypeScript):
型
要做到这一点,你必须添加一些类型Assert,例如:
型
或者,如果你想使用大写版本,使用intrinisic字符串操作类型:
型
这些问题看起来很棘手,因此我打开了a bug来研究是否可以在上游修复它。
as Lowercase
。型
wlwcrazw2#
对于Python实现,我使用:
字符串