TypeScript Version: 2.7.0-dev.201xxxxx
Search Terms: named generic type parameters / arguments
Code
interface UserInfo { }
var usersMap: Map<sessionId: string, info: UserInfo>;
Expected behavior:
No error, Map<sessionId: string, info: UserInfo> should be equivalent to Map<string, UserInfo> .
Actual behavior:
Syntax error: Generic type 'Map<K, V>' requires 2 type argument(s).
Playground Link:
https://www.typescriptlang.org/play/#src=interface%20UserInfo%20%7B%20%7D%0D%0Avar%20usersMap%3A%20Map%3CsessionId%3A%20string%2C%20info%3A%20UserInfo%3E%3B
Rationale:
Without a name, it is not often immediately clear what a type argument really mean. Take Map<string, UserInfo> as an example, is the first argument a sessionId, a userId or something else? In contrast, Map<sessionId: string, info: UserInfo> or Map<sessionId: string, UserInfo> is very clear.
The name of a type argument doesn't affect the actual type, just like the name of argument of a function type.
TypeScript Version: 2.7.0-dev.201xxxxx
Search Terms: named generic type parameters / arguments
Code
Expected behavior:
No error,
Map<sessionId: string, info: UserInfo>should be equivalent toMap<string, UserInfo>.Actual behavior:
Syntax error: Generic type 'Map<K, V>' requires 2 type argument(s).
Playground Link:
https://www.typescriptlang.org/play/#src=interface%20UserInfo%20%7B%20%7D%0D%0Avar%20usersMap%3A%20Map%3CsessionId%3A%20string%2C%20info%3A%20UserInfo%3E%3B
Rationale:
Without a name, it is not often immediately clear what a type argument really mean. Take
Map<string, UserInfo>as an example, is the first argument asessionId, auserIdor something else? In contrast,Map<sessionId: string, info: UserInfo>orMap<sessionId: string, UserInfo>is very clear.The name of a type argument doesn't affect the actual type, just like the name of argument of a function type.