2014-05-02 13 views
5

quando si chiama un .NET OAuthToken endpoint il risultato contiene due proprietà a partire da un "":TypeScript: istruzioni su: proprietà che iniziano con "." (Dot)

{ 
    "access_token":"abcde..." 
    "expires_in":1209599 
    ".expires":"Fri, 16 May 2014..." <- this 
    ".issued":"Fri, 02 May 2014..."  <- this 
    ... more properties ... 
} 

Quello che mi piace fare è creare un'interfaccia a macchina per gestire questo risultato. Tuttavia non so come dichiarare queste due proprietà con il puntino davanti.

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

Qualche idea?

risposta

6

Visualizzazione della sezione 3.7.1 di the TypeScript language specification, sembra che le proprietà delle firme in oggetti letterali funzionino all'incirca come le proprietà letterali dell'oggetto in JavaScript, il che significa che un nome di proprietà può essere un identificatore, una stringa letterale o un valore letterale numerico. In altre parole, si può semplicemente fare:

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

non sapeva è così facile ... Grazie mille! – okieh

+0

L'accesso a tali proprietà funziona allo stesso modo anche in JavaScript, come indicato nella risposta di basarat. Non è possibile utilizzare 'foo..expires' a causa del fatto che' .expires' non è un identificatore valido. – JAB

3

membri di interfaccia utilizzano appena citato:

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

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

Perché si digita '.expires' come un numero quando l'esempio usa stringhe (tecnicamente rappresentazioni di stringa di timestamp, ma nulla nella domanda dice che i timestamp sono effettivamente memorizzati come valori numerici)? – JAB

+0

@JAB Non ero focalizzato sul tipo particolare. Era concentrato su TypeSafety :) – basarat

Problemi correlati