- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试学习 typescript ,但在接口(interface)方面遇到了困难,我有一个要保存的对象token
和一个 route
在如下
const obj = {
token: 'thisismytoken',
'/path/to/somewhere': [{ ... }]
}
interface iObject {
token: string;
[key: string]: { ... }[]
}
TS2411: Property 'token' of type 'string' is not assignable to string index type '{ ... }'.
interface iRoute {
val1: number;
val2: string;
}
interface iObject extends iRoute {
token: string;
}
interface iObject {
[key: string]: { ... }[] | string;
}
TS2339: Property 'push' does not exist on type 'string | { ... }[]'.
Property 'push' does not exist on type 'string'.
最佳答案
你可以做这样的事情。您正在尝试创建字典,因此这可能会有所帮助。
有一个干净的代码
第一种方法
interface IDictionary<T> {
[key: string]: T;
}
interface iObject {
token: string;
route: IDictionary<any[]>;
}
//Use it like this
var obj: iObject = {
token: "thisismytoken",
route: {
"/path/to/somewhere": [{
pathName: 'somewhere'
}]
}
};
interface iObject { [key: string]: { ... }[] | string; }
interface IDictionary<T> {
[key: string]: T;
}
var obj: IDictionary<any> = {
token: "asdf123",
"path/to/somewhere": [{
data: 'something'
}]
};
TS2339: Property 'push' does not exist on type 'string | { ... }[]'. Property 'push' does not exist on type 'string'.
interface iObject {
[key: string]: Array<object> | string;
}
self.obj = {
token: self.tokenVal
};
self.obj[self.route] = [{ "routeName": self.routeName }];
(<Array<object>>self.obj[self.route]).push({
"zip": "123456"
});
关于Typescript为具有动态和静态键的对象创建接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48421319/
我是一名优秀的程序员,十分优秀!