結論だけ先に述べておきます。
- Angular8以下では、nehan(<=6.0.38)までしか使えません。
- ただしTypescript3.6.3以降を使える環境では、なんの問題もなくnehan(>=6.0.40)を使用できます。
以下に理由を書きますが、非常にしょうもないことです。
package.jsonのミス
nehan(<=6.0.38)においては、package.jsonのtypes
という属性の値が./dist/indx.d.ts
となっていました。
しかし実はこれ正しくは./dist/index.d.ts
と書かねばならなかったのです(eの字が抜けていた)。
- "types": "./dist/indx.d.ts", // version 6.0.38 + "types": "./dist/index.d.ts", // version 6.0.40
先に「Angular8以下では、nehan6.0.38を使ってください」と書きましたが、つまりそれは、このバグったpackage.json
を使ったversion6.0.38を使ってください、ということです。なぜか?
理由は「そのバグがあるために、Typescript3.5以下でもエラーが出ないから」です。つまりバグのある古いバージョンを使うことで、Typescript3.5以下しか使えないAngular(<=8)でバグがでない、ということです。
実はnehanは各所にgetterと言われる機能を使っているのですが、実はこれ、Typescript3.6.3以降じゃないと次のようなエラーが出て、正しく使えなかった機能だったのです。
error TS1086: An accessor cannot be declared in an ambient context.
でもnehan6.0.38は正しいindex.d.ts
が読み込めていない状態だったので、幸運にも? Typescript(<=3.5)でもこのエラーが出なかったのです!
というわけで、Typescript3.5.3までしか使えないAngular8では、nehan(>=6.0.40)を使用できません…
ちなみにAngular9になると、Typescript3.6系列がサポートされるらしいので、そこからはnehanを6.0.40にアップデートできます。