23.06.2015 Views

TypeScript Language Specification v1.5

TypeScript Language Specification v1.5

TypeScript Language Specification v1.5

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

An identifier or property access that denotes a previously declared member in the same constant<br />

enum declaration.<br />

A parenthesized constant enum expression.<br />

A +, –, or ~ unary operator applied to a constant enum expression.<br />

A +, –, *, /, %, , >>>, &, ^, or | operator applied to two constant enum expressions.<br />

In the example<br />

enum Test {<br />

A,<br />

B,<br />

C = Math.floor(Math.random() * 1000),<br />

D = 10,<br />

E<br />

}<br />

'A', 'B', 'D', and 'E' are constant members with values 0, 1, 10, and 11 respectively, and 'C' is a computed<br />

member.<br />

In the example<br />

enum Style {<br />

None = 0,<br />

Bold = 1,<br />

Italic = 2,<br />

Underline = 4,<br />

Emphasis = Bold | Italic,<br />

Hyperlink = Bold | Underline<br />

}<br />

all members are constant members. Note that enum member declarations can reference other enum<br />

members without qualification. Also, because enums are subtypes of the Number primitive type, numeric<br />

operators, such as the bitwise OR operator, can be used to compute enum values.<br />

9.3 Declaration Merging<br />

Enums are "open-ended" and enum declarations with the same qualified name relative to a common root<br />

(as defined in section 2.3) define a single enum type and contribute to a single enum object.<br />

It isn't possible for one enum declaration to continue the automatic numbering sequence of another, and<br />

when an enum type has multiple declarations, only one declaration is permitted to omit a value for the<br />

first member.<br />

When enum declarations are merged, they must either all specify a const modifier or all specify no const<br />

modifier.<br />

131

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!