在哪里声明 HTMLElementTagNameMap 以获得 Angular 元素的类型?

Where to declare HTMLElementTagNameMap to get typings for Angular Elements?

我想为我的 Angular 元素获得准确的类型,但是我应该把 HTMLElementTagNameMap 接口放在哪里,这样它才能被正确识别?

在每次出现时都转换类型:

const newCustomElement = 
   document.createElement('my-custom-element') as NgElement & WithProperties<{foo: 'bar'}>;

但是使用 Angular.io 中提到的第二种方法,通过声明 HTMLElementTagNameMap 对我不起作用。

我必须如何或在哪里正确使用它?

您可以在 Angular CLI 应用程序的 src 文件夹中创建 typings.d.ts 文件:

type NgElement = import ('@angular/elements').NgElement;
type WithProperties<T> = import ('@angular/elements').WithProperties<T>;

interface HTMLElementTagNameMap {
  'my-custom-element': NgElement & WithProperties<{foo: 'bar'}>;
}