Appendix C. Scoped Declarations
TypeScript declarations have a rich set of behaviors needed to model types and values, and as in JavaScript, they can be overloaded in a variety of ways. This appendix covers two of these behaviors, summarizing which declarations generate types (and which generate values), and which declarations can be merged.
Does It Generate a Type?
Some TypeScript declarations create a type, some create a value, and some create both. See to Table C-1 for a quick reference.
Keyword | Generates a type? | Generates a value? |
---|---|---|
|
Yes |
Yes |
|
No |
Yes |
|
Yes |
Yes |
|
No |
Yes |
|
Yes |
No |
|
No |
Yes |
|
Yes |
No |
Does It Merge?
Declaration merging is a core TypeScript behavior. Take advantage of it to create richer APIs, better modularize your code, and make your code safer.
Table C-2 is reprinted from “Declaration Merging”; it’s a handy reference for which kinds of declarations TypeScript will merge for you.
To | |||||||||
Value |
Class |
Enum |
Function |
Types alias |
Interface |
Namespace |
Module |
||
Value |
No |
No |
No |
No |
Yes |
Yes |
No |
— |
|
Class |
— |
No |
No |
No |
No |
Yes |
Yes |
— |
|
Enum |
— |
— |
Yes |
No |
No |
No |
Yes |
— |
|
From |
Function |
— |
— |
— |
No |
Yes |
Yes |
Yes |
— |
Type alias |
— |
— |
— |
— |
No |
No |
Yes |
— |
|
Interface |
— |
— |
— |
— |
— |
Yes |
Yes |
— |
|
Namespace |
— |
— |
— |
— |
— |
— |
Yes |
— |
|
Module |
— |
— |
— |
— |
— |
— |
— |
Yes |
Get Programming TypeScript now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.