Typescript:定义对象的类型

Posted

技术标签:

【中文标题】Typescript:定义对象的类型【英文标题】:Typescript: define type of an object 【发布时间】:2016-12-02 11:43:39 【问题描述】:

我想使用键值对来定义 Object 字面量的类型,如下所示。无论如何都无法做到这一点。请帮忙。

export const endPoints: name: string: method: string; url: string; = 
  allFeed: 
    method: 'GET',
    url: 'https://www.yammer.com/api/v1/messages.json'
  ,
  topFeed: 
    method: 'GET',
    url: 'https://www.yammer.com/api/v1/messages/algo.json'
  ,
  followingFeed: 
    method: 'GET',
    url: 'https://www.yammer.com/api/v1/messages/following.json'
  ,
  defaultFeed: 
    method: 'GET',
    url: 'https://www.yammer.com/api/v1/messages.json/my_feed.json'
  
;

【问题讨论】:

【参考方案1】:

你很亲密,应该是:

const endPoints:  [name: string]:  method: string; url: string;   = 
    allFeed: 
        method: 'GET',
        url: 'https://www.yammer.com/api/v1/messages.json'
    ,
    ...
;

你也可以使用接口:

interface EndPoint 
    method: string;
    url: string;


interface EndPointMap 
    [name: string]: EndPoint;


const endPoints: EndPointMap = 
    ...

或类型:

type EndPoint = 
    method: string;
    url: string;


type EndPointMap = 
    [name: string]: EndPoint;


const endPoints: EndPointMap = 
    ...

在我看来,这使代码更具可读性(与声明类型的内联方式相比)

【讨论】:

非常感谢。 :-)

以上是关于Typescript:定义对象的类型的主要内容,如果未能解决你的问题,请参考以下文章

安装typescript的命令,编译typescr为JavaScript

如何在1分钟内学会“TypeScript”

TypeScript `infer` 关键字

进阶学习13:TypeScript——安装使用特性详解

在分配之前使用变量'test' - Typescript

Typescript:定义对象的类型