使用模型实现扩展地图
extending map with a model implementation
我有一个休息电话 json 响应如下:
"20412": [
{
"username": "foo",
...
},
...
],
"20485": [
...
其中数组中的对象是 User
模型。
我正在尝试为此 json 创建一个界面,我可以在其中做 assetUsers.get("20412")
并让用户处于该界面之下。
我简单地试过了:
export interface AssetUsers extends Map<string, User[]> {}
但是(当尝试使用与上述类似的 json 创建模拟 AssetUsers 对象时)这给了我一个“不可分配”错误,指出 20412 在 AssetUsers 类型中不存在。
export interface User {
username: string;
}
export interface AssetUsers extends Map<string, User[]> { }
const mockAssetUsers: AssetUsers = {
"204311":[
{
"username":"foo",
},
{
"username":"bar",
},
],
"204832":[
{
"username":"bob",
},
{
"username":"baz",
},
],
}
如何为这个 json 创建一个模型接口?
不是接口,但您可以声明类型:
type AssetUsers = Map<string, User[]>;
get() 方法 returns Map 对象中的指定元素,JSON 对象没有 get() 方法,您也不能将 map 接口分配给 JSON对象。
export interface User {
username: string;
}
export interface AssetUsers extends Map<string, User[]> {}
const mockAssetUsers: AssetUsers = new Map();
mockAssetUsers.set("204311", [
{
username: "foo",
},
{
username: "bar",
},
]);
mockAssetUsers.set("204832", [
{
username: "bob",
},
{
username: "baz",
},
]);
console.log(mockAssetUsers.get("20411"));
P.S 也许这是相关的,但这样做不会让您使用 get() 方法。
const mockAssetUsers: {[key: string]: User[]}
我有一个休息电话 json 响应如下:
"20412": [
{
"username": "foo",
...
},
...
],
"20485": [
...
其中数组中的对象是 User
模型。
我正在尝试为此 json 创建一个界面,我可以在其中做 assetUsers.get("20412")
并让用户处于该界面之下。
我简单地试过了:
export interface AssetUsers extends Map<string, User[]> {}
但是(当尝试使用与上述类似的 json 创建模拟 AssetUsers 对象时)这给了我一个“不可分配”错误,指出 20412 在 AssetUsers 类型中不存在。
export interface User {
username: string;
}
export interface AssetUsers extends Map<string, User[]> { }
const mockAssetUsers: AssetUsers = {
"204311":[
{
"username":"foo",
},
{
"username":"bar",
},
],
"204832":[
{
"username":"bob",
},
{
"username":"baz",
},
],
}
如何为这个 json 创建一个模型接口?
不是接口,但您可以声明类型:
type AssetUsers = Map<string, User[]>;
get() 方法 returns Map 对象中的指定元素,JSON 对象没有 get() 方法,您也不能将 map 接口分配给 JSON对象。
export interface User {
username: string;
}
export interface AssetUsers extends Map<string, User[]> {}
const mockAssetUsers: AssetUsers = new Map();
mockAssetUsers.set("204311", [
{
username: "foo",
},
{
username: "bar",
},
]);
mockAssetUsers.set("204832", [
{
username: "bob",
},
{
username: "baz",
},
]);
console.log(mockAssetUsers.get("20411"));
P.S 也许这是相关的,但这样做不会让您使用 get() 方法。
const mockAssetUsers: {[key: string]: User[]}