【发布时间】:2017-03-03 11:16:52
【问题描述】:
我正在输入一个运行良好的表单结构。然而,在字段中表单字段的验证部分发生了一些有趣的事情。
我的可视化代码会告诉我phone 常量中的验证“required2”不正确,因为它必须是“必需的”。
但是,当您查看 form 常量的字段集合中的 phonefield 项时,并没有抱怨 required2 是不允许的。
只有当我在界面中设置required时,表单常量才会失效。
我的目标是限制每个表单字段的验证,以便有人无法将键/值添加到未键入的验证字典中。
有趣的是,当我将 phonenumber 更改为 phonenumber2 时,输入将不正确。但是更改所需的密钥并不重要,因为它不是必需的。
我的界面
declare type fields = IPhoneField | ISelectField ..etc;
export interface IPage {
title?: string;
buttons?: IButton[];
fields: fields[];
showOn?: IDictionary <string | number>;
}
export interface IForm {
modelPreset: IDictionary <string | number>;
successPageConfig?: IDictionary <string | number | boolean>;
presentation: pagePresentation;
pages: IPage[];
}
interface IField {
label: string;
model: string;
placeholder?: string;
addon?: string;
showOn?: IDictionary <string | number>;
maxlength?: number;
}
export interface IPhoneField extends IField {
type: 'phone';
validation: {
required?: string;
phonenumber: string;
};
}
我的代码
const phone: IPhoneField = {
"label":"Phone Number",
"model":"phonenumber",
"type":"phone",
"placeholder":"Phone number",
"validation":{
"required2":"A phone number is required",
"phonenumber":"Please enter a valid phone number",
}
};
const form: IDictionary<IForm> = {
"form1":{
"pages":[
{
"fields": [
{
"label":"Phone Number",
"model":"phonenumber",
"type":"phone",
"placeholder":"Phone number",
"validation":{
"required2":"A phone number is required",
"phonenumber":"Please enter a valid phone number"
}
}
]
}
]
}
};
有人知道为什么会这样吗?是 Typescript 的 bug 吗?
查看游乐场链接: NEW playground
【问题讨论】:
-
您能否添加一个playground 链接,其中包含所有定义和有问题的代码?
-
在我原来的问题中查看游乐场链接
-
游乐场链接在
form结构中也有同样的错误。 -
@NitzanTomer 是的,操场完美。我的 VS Code 或 Gulp 构建不会绊倒
form常量。我应该在 TS Github 页面上报告这个问题还是应该进一步调查? -
如果它在操场上运行良好,那么编译器就没有问题,也没有什么可报告的。您使用的是什么版本的打字稿?直接使用
tsc会有什么反应?
标签: typescript typing