在打字稿组件中使用'import * as'会出错 -

Posted

技术标签:

【中文标题】在打字稿组件中使用\'import * as\'会出错 -【英文标题】:Using 'import * as' in a typescript component gives an error -在打字稿组件中使用'import * as'会出错 - 【发布时间】:2017-05-28 22:56:20 【问题描述】:

我正在尝试将 html 模板导入打字稿 component 并且它给了我一个错误。我正在使用 Angular 1.5。

组件看起来像这样......

import * as template from './home.template.html';
import  HomeController  from './home.controller';

export const HomeComponent = 
    bindings: 
        conf: '<',
    ,
    controller: HomeController,
    template,
;

然后像这样添加到模块中......

import * as angular from 'angular';

import  HomeComponent  from './home.component';

export const HomeModule = angular.module('home', [])
.component('home', HomeComponent);

我得到的错误是......

类型参数 ' bindings: conf: string;;控制器:typeof HomeCon...' 不可分配给“IComponentOptions”类型的参数。 属性“模板”的类型不兼容.. 类型 'typeof '.html'' 不可分配给类型 'string | ((...args: any[]) => 字符串) | (string | ((...args: any[]) => string))[]'。 类型 'typeof'.html'' 不能分配给类型 '(string | ((...args: any[]) => string))[]'。 类型 'typeof '*.html'' 中缺少属性 'find'。

如果我将template: template.toString() 添加到 HomeComponent,它似乎可以工作。但这对我来说感觉不对。还有其他建议吗?

【问题讨论】:

你有html文件的模块声明吗? Is it possible to import an HTML file as a string with TypeScript?的可能重复 【参考方案1】:

在你的类型声明的某个地方,你需要声明一个以 .html 结尾的模块

declare module '*.html' 
    const template: string;
    export default template;

使用此声明,您的代码应该无需其他更改即可运行

【讨论】:

这是正确的。但是请考虑提到重要的声明需要更新,因为它目前是错误的

以上是关于在打字稿组件中使用'import * as'会出错 -的主要内容,如果未能解决你的问题,请参考以下文章

打字稿和vue中的Summernote

样式组件 + 打字稿:“as”不可分配给类型 IntrinsicAttributes

withRouter 与 react-redux 连接导致打字稿出错

打字稿中的样式组件“as”道具和自定义道具

尝试在打字稿中使用 React useref 时出错

打字稿反应组件中的反应/道具类型eslint错误