Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeScript-如何:以“开始”开头的属性&引用;(dot)_Typescript - Fatal编程技术网

TypeScript-如何:以“开始”开头的属性&引用;(dot)

TypeScript-如何:以“开始”开头的属性&引用;(dot),typescript,Typescript,调用.NET OAuthToken端点时,结果包含以“.”开头的两个属性: 有什么想法吗?查看的第3.7.1节,对象文字中的属性签名的工作原理与JavaScript中的对象文字属性定义大致相同,这意味着属性名称可以是标识符、字符串文字或数字文字。换句话说,您可以简单地执行以下操作: export interface Token { access_token: string; expires_in: number; ".expires": string; ".iss

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

有什么想法吗?

查看的第3.7.1节,对象文字中的属性签名的工作原理与JavaScript中的对象文字属性定义大致相同,这意味着属性名称可以是标识符、字符串文字或数字文字。换句话说,您可以简单地执行以下操作:

export interface Token {
    access_token: string;
    expires_in: number;
    ".expires": string;
    ".issued": string;
}

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

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

var foo:Token;
foo['.expires'] = '123'; // Error 
foo['.expires'] = 123; // okay 

当示例使用字符串时,为什么要键入
.expires
作为一个数字(从技术上讲,时间戳是字符串表示的,但问题中没有说明时间戳实际上是以数值形式存储的)?@JAB I没有关注特定的类型。专注于类型安全:)不知道有那么简单。。。谢谢!访问这些属性的工作原理与在JavaScript中的工作原理相同,正如basarat在回答中指出的那样。您不能使用
foo..expires
,因为
.expires
不是有效的标识符。
export interface Token {
    access_token: string;
    expires_in: number;
    ".expires": string;
    ".issued": string;
}
interface Token {
    access_token: string;
    expires_in: number;
    '.expires': number;
}

var foo:Token;
foo['.expires'] = '123'; // Error 
foo['.expires'] = 123; // okay