declare keyword

pull/12982/head
Simon Holthausen 2 years ago
parent c1698e68d4
commit e695d3dcf4

@ -105,12 +105,27 @@ const visitors = {
}, },
FunctionExpression: remove_this_param, FunctionExpression: remove_this_param,
FunctionDeclaration: remove_this_param, FunctionDeclaration: remove_this_param,
TSDeclareFunction() {
return b.empty;
},
ClassDeclaration(node, context) {
if (node.declare) {
return b.empty;
}
return context.next();
},
VariableDeclaration(node, context) {
if (node.declare) {
return b.empty;
}
return context.next();
},
TSModuleDeclaration(node, context) { TSModuleDeclaration(node, context) {
if (!node.body) return b.empty; if (!node.body) return b.empty;
// namespaces can contain non-type nodes // namespaces can contain non-type nodes
const cleaned = context.visit(node.body.body); const cleaned = /** @type {any[]} */ (node.body.body).map((entry) => context.visit(entry));
if (cleaned.length !== 0) { if (cleaned.some((entry) => entry !== b.empty)) {
e.typescript_invalid_feature(node, 'namespaces with non-type nodes'); e.typescript_invalid_feature(node, 'namespaces with non-type nodes');
} }

@ -9,7 +9,18 @@
} }
class Foo { class Foo {
constructor(public readonly name: string) {} constructor(readonly name: string) {}
}
declare const declared_const: number;
declare function declared_fn(): void;
declare class declared_class {
foo: number;
}
declare module 'foobar' {}
namespace SomeNamespace {
export type Foo = true
} }
export type { Hello }; export type { Hello };

Loading…
Cancel
Save