@@ -14,6 +14,8 @@ const { inferRuntimeTypeFromTypeNode } = require('./ts-types')
14
14
* @typedef {import('../index').ComponentTypeEmit } ComponentTypeEmit
15
15
*/
16
16
17
+ const noop = Function . prototype
18
+
17
19
module . exports = {
18
20
isTypeNode,
19
21
flattenTypeNodes,
@@ -25,17 +27,21 @@ module.exports = {
25
27
}
26
28
27
29
/**
28
- * @param {TSESTreeNode | ASTNode } node
29
- * @returns {node is TSESTreeTypeNode }
30
+ * @param {ASTNode } node
31
+ * @returns {node is TypeNode }
30
32
*/
31
33
function isTypeNode ( node ) {
32
- return (
34
+ if (
35
+ node . type === 'TSAbstractKeyword' ||
33
36
node . type === 'TSAnyKeyword' ||
37
+ node . type === 'TSAsyncKeyword' ||
34
38
node . type === 'TSArrayType' ||
35
39
node . type === 'TSBigIntKeyword' ||
36
40
node . type === 'TSBooleanKeyword' ||
37
41
node . type === 'TSConditionalType' ||
38
42
node . type === 'TSConstructorType' ||
43
+ node . type === 'TSDeclareKeyword' ||
44
+ node . type === 'TSExportKeyword' ||
39
45
node . type === 'TSFunctionType' ||
40
46
node . type === 'TSImportType' ||
41
47
node . type === 'TSIndexedAccessType' ||
@@ -50,7 +56,13 @@ function isTypeNode(node) {
50
56
node . type === 'TSNumberKeyword' ||
51
57
node . type === 'TSObjectKeyword' ||
52
58
node . type === 'TSOptionalType' ||
59
+ node . type === 'TSQualifiedName' ||
60
+ node . type === 'TSPrivateKeyword' ||
61
+ node . type === 'TSProtectedKeyword' ||
62
+ node . type === 'TSPublicKeyword' ||
63
+ node . type === 'TSReadonlyKeyword' ||
53
64
node . type === 'TSRestType' ||
65
+ node . type === 'TSStaticKeyword' ||
54
66
node . type === 'TSStringKeyword' ||
55
67
node . type === 'TSSymbolKeyword' ||
56
68
node . type === 'TSTemplateLiteralType' ||
@@ -65,7 +77,16 @@ function isTypeNode(node) {
65
77
node . type === 'TSUnionType' ||
66
78
node . type === 'TSUnknownKeyword' ||
67
79
node . type === 'TSVoidKeyword'
68
- )
80
+ ) {
81
+ /** @type {TypeNode['type'] } for type check */
82
+ const type = node . type
83
+ noop ( type )
84
+ return true
85
+ }
86
+ /** @type {Exclude<ASTNode['type'], TypeNode['type']> } for type check */
87
+ const type = node . type
88
+ noop ( type )
89
+ return false
69
90
}
70
91
71
92
/**
0 commit comments