首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >约束Typescript中对象的值的类型

约束Typescript中对象的值的类型
EN

Stack Overflow用户
提问于 2019-05-09 03:26:25
回答 2查看 330关注 0票数 0

在typescript中,如何为普通的旧式javascript对象编写类型签名,这些对象可以有任何键,但值始终是字符串。例如,{a:"foo"}{b:"bar"}都是有效值,但{a:[1,2,3]}{b:3}不是。

我希望能够写出像这样的东西

代码语言:javascript
复制
let foo : {*: string} = {a: "foo"}

目前,我正在使用any来实现这一点,但这并不像我希望的那样精确。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-09 03:30:28

您可以使用索引签名来声明所有值都将是一个字符串...

代码语言:javascript
复制
type Example = { [key: string]: string };

示例:

代码语言:javascript
复制
type Example = { [key: string]: string };

const a: Example = {
    "anything": "any string", // ok
    anotherkey: "a string", // ok
    thirdKey: 1 // Error
};
票数 1
EN

Stack Overflow用户

发布于 2019-05-09 03:32:55

我猜您正在查看属性值的enum定义。

我认为你可以像这样声明它:

代码语言:javascript
复制
let foo: { [k: string]: 'foo' | 'bar' | 'type'};

foo.a = 'bar';
foo.d = 'type';
foo.q = 'bar';
foo.c = 'let'; // shows as not assignable

您可以在this typescript fiddle中看到它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56047753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档