TypescriptSpe c: декларация NamespaceDeclaration в DeclarationScript разрешена в соответствии с spe c, но не в TypescriptCompiler - PullRequest
0 голосов
/ 25 мая 2020

Я использую ts c Version 4.0.0-dev.20200514.

Я не понимаю грамматические / производственные правила машинописного текста spe c в сочетании с ошибками моего ts c.

В качестве примера у меня есть два файла: src / index.ts и src / foo.d.ts. В обоих файлах у меня нет операторов импорта или экспорта, поскольку я хочу, чтобы все объявления находились в глобальном пространстве имен. Согласно файлу spe c оба файла являются сценариями, при этом index.ts является сценарием реализации, а foo.d.ts - сценарием объявления. Содержимое моих файлов:

$ cat index.ts
console.log(lala.lol); 
$ cat foo.d.ts
namespace lala {
  var lol = 10;
}

Компилятор Typescript теперь жалуется, что «Объявления верхнего уровня в файлах d.ts должны начинаться с модификатора 'declare' или 'export'. Ts (1046) "

Согласно spe c (https://github.com/Microsoft/TypeScript/blob/376534981220fbbfee39ae97299aafe0d9c473ce/doc/spec.md#A) У меня есть следующая продукция: DeclarationScript => DeclarationScriptElements => DeclarationElement => NamespaceDeclaration => 'namespace' IdentifierPath {NamespaceBody} => 'namespace' 'lala' {NamespaceBody} = *> 'namespace' 'lala' 'var' 'lol' '=' '10' ';'

Он также говорит мне, что «Инициализаторы не разрешены в окружающих контекстах. Ts (1039)», хотя я не использовал слово «declare», и согласно spe c каждое AmbientDeclaration начинается с 'объявить'.

Так что теперь я не знаю, где мое недоразумение.

...