我正在学习 nodejs(我喜欢它!)。我试图弄清楚如何使用更短的别名,console.log然后我发现我可以从那时起使用var cout=console.log和使用cout('[string]')。然后当我想使用process.stdout.write并且我也尝试为它创建一个简短的别名时,使用var out=process.stdout.write. 但是当我使用时out('[string]'),我收到以下错误:
_stream_writable.js:220 var state = this._writableState; ^ 类型错误:无法读取未定义的属性“_writableState”
在 Writable.write (_stream_writable.js:220:19) 在 Socket.write (net.js:670:40) 在 Object。(/home/shayan/Desktop/nodejs/server.js:12:1)
在 Module._compile (module.js:571:32)
在 Object.Module._extensions..js (module.js:580:10) 在 Module.load (module.js:488:32) 在 tryModuleLoad (module.js:447:12) 在 Function.Module._load (module .js:439:3) 在 Module.runMain (module.js:605:10) 运行 (bootstrap_node.js:423:7)
这里有什么问题?我怎样才能正确地创建一个短别名process.stdout.write?谢谢
我正在为我正在处理的 api 编写一个注册端点,我正在使用 nestjs 和类验证器来验证输入数据。用户可以使用他们的电话号码或电子邮件地址或两者进行注册。所以为了验证输入,我应该确保至少提供了其中之一。但是我很难弄清楚如何做到这一点而不会弄得一团糟。
这是我的 dto:
export class register {
@ApiModelProperty()
@IsNotEmpty()
@IsAlpha()
firstName: string
@ApiModelProperty()
@IsNotEmpty()
@IsAlpha()
lastName: string
@ApiModelProperty()
@ValidateIf(o => o.email == undefined)
@IsNotEmpty()
@isIRMobile()
phone: string
@ApiModelProperty()
@ValidateIf(o => o.phone == undefined)
@IsNotEmpty()
@IsEmail()
email: string
@ApiModelProperty()
@IsNotEmpty()
password: string
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我使用了条件验证,它适用于仅提供电话号码或电子邮件地址之一的情况。但问题是,当两者都提供时,其中之一将不会被验证,并且将允许使用无效值。
有什么建议?
我在一个项目上使用打字稿,在它的某些部分我必须使用联合类型。但是我收到了一些我不知道如何处理的奇怪错误消息。考虑以下类型:
type body = {
[_: string]:
| 'boolean'
| 'number'
| 'string'
| {
type: 'boolean' | 'number' | 'string'
optional?: boolean
}
| {
type: 'array'
items: 'boolean' | 'string' | 'number'
optional?: boolean
[_: string]: any
}
}
Run Code Online (Sandbox Code Playgroud)
我使用[_: string]:是因为我应该能够使用任何任意键。该值可以是指示类型的字符串,也可以是提供更多详细信息的对象。现在考虑以下函数:
function show(data: body) {
console.log(data)
}
Run Code Online (Sandbox Code Playgroud)
当我用下面的对象调用上面的函数时:
const data = {
username: { type: 'string', optional: false },
address: { type: 'string' },
city: 'string'
}
Run Code Online (Sandbox Code Playgroud)
打字稿给出了以下错误:
'{ 用户名:{ 类型:字符串;可选:布尔值;}; 地址:{ 类型:字符串;}; 城市:字符串;}' 不能分配给'body' 类型的参数。 …