如何让indexOf与TypeScript数字基本类型一起玩得很好,现在它总是返回-1,即使它确实存在?
在 SelectElement 课程中,我有一个属性"额外"包含一个名为&#34的键的对象;当"这是 SelectElementInterface 中定义的数字数组。
现在在 SelectElement 类中,我的属性值也是类型编号。
但是当在 SelectElement 类的 displayExtra 方法中运行代码时,我遇到了有关indexOf的问题。控制台日志的输出如下所示
[16:28:20] console.log: [1,2]
[16:28:20] console.log: 1
[16:28:20] console.log: -1
从控制台日志中可以看出,该值确实存在,并且根据我的界面它们应该是相同的类型。这是TypeScript中的错误还是我在这里遗漏了一些东西?如何让indexOf与TypeScript中的基本数字类型一起使用?
SelectElement类
export class SelectElement extends Element<number> {
public options: object;
public extra: SelectElementInterface;
constructor(options: ElementInterface, selectOptions: object, extra: SelectElementInterface) {
super(options);
this.options = selectOptions;
this.extra = extra;
}
public displayExtra(): boolean {
console.log(JSON.stringify(this.extra.when));
console.log(this.value);
console.log(this.extra.when.indexOf(this.value));
return this.extra.when.indexOf(this.value) > -1;
}
}
元素超类
export abstract class Element<type> {
public id: number;
public type: string;
public label: string;
public required: boolean;
public value: type;
constructor(options: ElementInterface) {
this.id = options.id;
this.type = options.type;
this.label = options.label;
this.required = options.required;
}
abstract displayExtra(): boolean;
}
ElementInterface
export interface ElementInterface {
id: number,
type: string,
label: string,
required: boolean,
value: string
}
SelectElementInterface
export interface SelectElementInterface {
input: string,
label: string,
required: boolean,
when: Array<number>,
value: string
}
修改:删除了示例中不必要的拼写错误和代码。
答案 0 :(得分:1)
你称之为超级(选项),但我没有看到在构造函数中的任何位置设置值:
constructor(options: ElementInterface) {
this.id = options.id;
this.type = options.type;
this.label = options.label;
this.required = options.required;
// Should this be set here?
// this.value == options.value
}