TheLarkInn / angular2-template-loader

Chain-to loader for webpack that inlines all html and style's in angular2 components.
MIT License
205 stars 70 forks source link

Problem: Cannot use angular2-template-loader with webpack-env.d.ts #23

Open lacolaco opened 8 years ago

lacolaco commented 8 years ago

For use webpack APIs (like require.context()), webpack-env.d.ts is needed. The definition includes its own require.

https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/webpack/webpack-env.d.ts#L21

It returns a value as T. so require() returns the type {}.

error TS2345: Argument of type '{ selector: string; template: {}; }' is not assignable to parameter of type 'ComponentMetadataType'.
  Types of property 'template' are incompatible.
    Type '{}' is not assignable to type 'string'.

idea

Maybe, The loader should replace templateUrl to <string>require(...).

TheLarkInn commented 8 years ago

Oh interesting. I'll welcome a pr and tests for this absolutely.

DethAriel commented 7 years ago

Does anyone have a workaround for that?

I also feel that replacing stuff with <string>require(...) might interfere with tslint (and tslint-loader) setting of treating such constructs an error. But not sure about this last piece

DethAriel commented 7 years ago

@TheLarkInn I also think that given the fact that this project's primary consumers are Webpack users, you should really be recommending to install @types/webpack-env

nertzy commented 7 years ago

The correct way to require a string with webpack-env.d.ts is

require<string>(...)