【发布时间】:2021-03-18 18:16:27
【问题描述】:
处理 Node.js 项目并使用 TypeScript。
我正在尝试将函数参数类型限制为特定的基类。我是 Node 和 TypeScript 的新手,并且来自 C# 背景,因此可能不太了解 lang 的某些特征。
拿着这些sn-ps。
首先,我的班级声明
class DTO{
}
class userDTO extends DTO{
@IsDefined({message:"Username required"})
@Expose()
@Length(1,10, {message:"min 1 max 10"})
username:String;
}
class badDTO {
name:String;
}
现在我将创建实例:
let user = new userDTO();
user.username = "My username";
let isUserDTO = user instanceof DTO; // Evaluates true
let bad = new badDTO();
bad.name = "Bob";
let isBadDTO = user instanceof DTO; // Evaluates false
这是我打算调用的方法的签名
export default function ValidateDTO(objToValidate:DTO, validateMissingProperties:boolean): Array<string>{
return [];
}
最后,当我真正调用函数时。
let userErrors = ValidateDTO(user, true);
// Why is this allowed?
let badErr = ValidateDTO(bad, true);
我希望第二个 ValidateDTO 向我显示一个警告,但实际上并没有运行,因为 'bad' 不是上面 instanceOf 所证明的 DTO - 如果我尝试将字符串作为第二个参数传递,我会看到一个错误,这就是我希望将非 DTO 作为第一个参数传递。
谁能告诉我哪里出错了?如何限制传递给函数的对象类型。
也很乐意根据需要分享其他代码。不知道我可能还缺少什么。
【问题讨论】:
标签: node.js typescript