相关疑难解决方法(0)

属性不能分配给接口中的字符串索引

我有以下接口:

export interface Meta {
  counter: number;
  limit: number;
  offset: number;
  total: number;
}

export interface Api<T> {
  [key: string]: T[];
  meta: Meta; // error
}
Run Code Online (Sandbox Code Playgroud)

目前,我收到以下错误:

'Meta'类型的属性'meta'不能赋予字符串索引类型'T []'.

搜索了一下之后,我在TS文档中找到了这个声明:

虽然字符串索引签名是描述"字典"模式的有效方式,但它们还强制所有属性都与其返回类型匹配.这是因为字符串索引声明obj.property也可用作obj ["property"].

这是否意味着当我有一个字符串索引签名时,我不能没有匹配此类型的任何其他变量?

实际上我可以摆脱这个错误声明这样的界面:

export interface Api<T> {
  [key: string]: any; // used any here
  meta: Meta;
}
Run Code Online (Sandbox Code Playgroud)

这样做,我失去了类型推断的完全能力.没有这种丑陋的方式,有没有办法做到这一点?

interface typescript typescript2.0

16
推荐指数
2
解决办法
6022
查看次数

如何将 Typescript 类型定义为字符串字典,但具有一个数字“id”属性

现有的 JavaScript 代码有“记录”,其中 id 是数字,其他属性是字符串。尝试定义这种类型:

type t = {
    id: number;
    [key:string]: string
}
Run Code Online (Sandbox Code Playgroud)

给出错误 2411 id 类型编号无法分配给字符串

typescript

16
推荐指数
1
解决办法
1278
查看次数

标签 统计

typescript ×2

interface ×1

typescript2.0 ×1