エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

Typescriptで`'x' is not constructer`

経緯

js→tsへの移行で実行時に'x' is not constructerというエラーが出てきた。
コンストラクタは宣言してるはずなのになぁ~って思って調べていたが、かなり沼にハマったので、記録を残しておく。

なお、過去の移行話は、下記に散らばってるので、興味があれば。

suzaku-tec.hatenadiary.jp

suzaku-tec.hatenadiary.jp

原因

理由は、そのままコンストラクタがないから。
たしかに、consoleデバックすると、constructorが存在してない。

対応

下記の対応をしたら動いた。

import * as RsshipTab from "./RsshipTab";

import RsshipTab from "./RsshipTab";

ちなみに、RsshipTabの概要は以下。

export default class RsshipTab {
・・・・
}

あんまり詳しいこと書いてあるサイトがなかったので、予想だが、別名付けた際に、同じ名前で別名付けてしまったときにコンストラクタが消失したのだと思っている。
別名の仕組みが分かってないゆえに起きた事象だと思う。。。
※今でもよく分かってないが。。。

参考サイト

javascript - Typescript es6 import module "File is not a module error" - Stack Overflow

いろいろ調べたんだけど、欲しい情報と違う情報ばっかり出てきて、かなり難航した。。。
ググる能力がないのかとも考えるほどには悩んだ。
「ググれカス」ならぬ、「ググってもカス」なのか?って感じてしまった。。。
精神的に追い詰めるから、そういう言葉は言うもんじゃないなと思いました(小並感)

所感・感想・雑記

消失って言うと、どうしても「涼宮ハルヒの消失」を連想してしまうな。。。

どこで消失したのか探すのに苦労した。。。
理由と対処は、なんとなくサイトを横断して見ていったときに、もしやレベルで試したことが当たっていて、

ts-migrateが正常に終わっていると思っていたが、実は解決できてない箇所がFIXMEとかで残っていることに、最近ようやっと気づいた。
宣言うんぬんが一番多い気がする。。。
とりあえず、動作確認が終わったら、一個ずつ潰していこうと思っているが、辛たん。。。