是否可以在 TypeScript 中共享全局声明?

Gei*_*erg 3 typescript

我通常将一些服务器端变量放入全局范围,以便我可以从客户端 TypeScript 代码中的任何位置访问它们,例如:

.cshtml 中的服务器:

<script>
  const RazorGlobals = {
    apiBaseUrl: '@Model.ApiBaseUrl'
  }
</script>
Run Code Online (Sandbox Code Playgroud)

客户端代码:

declare const RazorGlobals: {
  apiBaseUrl: string
}

fetch(RazorGlobals.apiBaseUrl + '/myResource').then(doStuff)
Run Code Online (Sandbox Code Playgroud)

目前,我必须在declare const RazorGlobals...需要使用它的每个文件顶部重复该部分。我正在寻找一种在单个位置定义此声明的方法,例如以下伪代码:

全局.d.ts:

export declare const RazorGlobals: {
  apiBaseUrl: string
}
Run Code Online (Sandbox Code Playgroud)

文件1.ts:

import './globals'

fetch(RazorGlobals.apiBaseUrl + '/myResource').then(doStuff)
Run Code Online (Sandbox Code Playgroud)

文件2.ts:

import './globals'

fetch(RazorGlobals.apiBaseUrl + '/myOtherResource').then(doOtherStuff)
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这样的目标?

tos*_*skv 5

如果您想声明存在一个在任何地方都可用的全局变量,您只需拥有一个包含声明的 .d.ts 文件即可。

// globals.d.ts
declare const RazorGlobals: {
  apiBaseUrl: string
}
Run Code Online (Sandbox Code Playgroud)

不需要进口。