Rub*_*ten 1 typescript typescript-typings
我有一个 JavaScript 方法,可以根据目录结构自动导入 JSON 模式。这意味着我有一个位于 的文件/path/to/my/file.json,然后将其加载到 中schemas.path.to.my.file。
我使用以下 TypeScript 定义在 TypeScript 中使用我的代码,但无济于事。它一直给我关于 的错误no index signature,尽管似乎有一个。
import jsonschema = require("jsonschema");
interface NestedSchemas {
[key: string]: NestedSchemas | jsonschema.Schema;
}
interface MySchemas {
validator: jsonschema.Validator;
initialized: boolean;
walk: Promise<NestedSchemas>;
schemas: NestedSchemas;
}
declare var _: MySchemas;
export = _;
Run Code Online (Sandbox Code Playgroud)
当我尝试使用我的代码时,我看到 linter 弹出以下内容:
有趣的是它首先显示Schema然后NestedSchemas(虽然在界面中以相反的方式定义),并且它无论如何都不会尝试解析它,因为它是一个字符串键。
我在这里做错了什么?
您可以像这样简化问题:这会发出警告:
interface NestedSchemas {
[key: string]: NestedSchemas | string;
}
const themas: NestedSchemas = {};
themas['0.1'].foo.bar.baz
Run Code Online (Sandbox Code Playgroud)
虽然这不会:
interface NestedSchemas {
[key: string]: NestedSchemas;
}
const themas: NestedSchemas = {};
themas['0.1'].foo.bar.baz
Run Code Online (Sandbox Code Playgroud)
这是因为打字稿不知道 willthemas['0.1']是类型NestedSchemas还是string.
(((themas['0.1'] as NestedSchemas).foo as NestedSchemas).bar as NestedSchemas).baz
(我承认,不太优雅)
您应该阅读https://www.typescriptlang.org/docs/handbook/advanced-types.html了解有关它的详细信息。
| 归档时间: |
|
| 查看次数: |
6498 次 |
| 最近记录: |