TypeScript - 如何:以"."开头的属性.(点)

oki*_*ieh 8 typescript

调用.NET OAuthToken端点时,结果包含两个以"."开头的属性:

{   
    "access_token":"abcde..."
    "expires_in":1209599
    ".expires":"Fri, 16 May 2014..."    <- this
    ".issued":"Fri, 02 May 2014..."     <- this
    ... more properties ...
}
Run Code Online (Sandbox Code Playgroud)

我喜欢做的是在TypeScript中创建一个接口来处理这个结果.但是我不知道如何使用前面的小点声明这两个属性.

export interface Token {
    access_token: string;
    expires_in: number;
    .expires???
    .issued???
}
Run Code Online (Sandbox Code Playgroud)

任何的想法?

JAB*_*JAB 10

查看TypeScript语言规范的 3.7.1节,看起来对象文字中的属性签名与JavaScript中的对象文字属性定义大致相同,这意味着属性名称可以是标识符,字符串文字或数字文字.换句话说,你可以简单地做:

export interface Token {
    access_token: string;
    expires_in: number;
    ".expires": string;
    ".issued": string;
}
Run Code Online (Sandbox Code Playgroud)


bas*_*rat 6

只需使用带引号的接口成员:

interface Token {
    access_token: string;
    expires_in: number;
    '.expires': number;
}

var foo:Token;
foo['.expires'] = '123'; // Error 
foo['.expires'] = 123; // okay 
Run Code Online (Sandbox Code Playgroud)

  • @JAB我并不关注特定类型。专注于类型安全:) (2认同)