TypeScript: reserve unknown as TSUnknownKeyword (#8755)

This commit is contained in:
Pig Fang
2018-09-26 01:19:32 +08:00
committed by Brian Ng
parent 889cdb8da5
commit f38be13113
11 changed files with 485 additions and 371 deletions

View File

@@ -762,6 +762,9 @@ export function assertTSIndexSignature(node: Object, opts?: Object = {}): void {
export function assertTSAnyKeyword(node: Object, opts?: Object = {}): void {
assert("TSAnyKeyword", node, opts);
}
export function assertTSUnknownKeyword(node: Object, opts?: Object = {}): void {
assert("TSUnknownKeyword", node, opts);
}
export function assertTSNumberKeyword(node: Object, opts?: Object = {}): void {
assert("TSNumberKeyword", node, opts);
}

View File

@@ -698,6 +698,11 @@ export function TSAnyKeyword(...args: Array<any>): Object {
}
export { TSAnyKeyword as tsAnyKeyword };
export { TSAnyKeyword as tSAnyKeyword };
export function TSUnknownKeyword(...args: Array<any>): Object {
return builder("TSUnknownKeyword", ...args);
}
export { TSUnknownKeyword as tsUnknownKeyword };
export { TSUnknownKeyword as tSUnknownKeyword };
export function TSNumberKeyword(...args: Array<any>): Object {
return builder("TSNumberKeyword", ...args);
}

View File

@@ -128,6 +128,7 @@ defineType("TSIndexSignature", {
const tsKeywordTypes = [
"TSAnyKeyword",
"TSUnknownKeyword",
"TSNumberKeyword",
"TSObjectKeyword",
"TSBooleanKeyword",

View File

@@ -2406,6 +2406,20 @@ export function isTSAnyKeyword(node: Object, opts?: Object): boolean {
return false;
}
export function isTSUnknownKeyword(node: Object, opts?: Object): boolean {
if (!node) return false;
const nodeType = node.type;
if (nodeType === "TSUnknownKeyword") {
if (typeof opts === "undefined") {
return true;
} else {
return shallowEqual(node, opts);
}
}
return false;
}
export function isTSNumberKeyword(node: Object, opts?: Object): boolean {
if (!node) return false;
@@ -4116,6 +4130,7 @@ export function isTSType(node: Object, opts?: Object): boolean {
if (
nodeType === "TSType" ||
"TSAnyKeyword" === nodeType ||
"TSUnknownKeyword" === nodeType ||
"TSNumberKeyword" === nodeType ||
"TSObjectKeyword" === nodeType ||
"TSBooleanKeyword" === nodeType ||