Help us understand the problem. What is going on with this article?

JavaScriptからTypeScriptへ移行した際に Property does not exist on type '{}'. で怒られた話

More than 1 year has passed since last update.

どうも、最近TypeScriptを書いてます(仮) entakuです。

今回はJavaScriptからTypeScriptへ何も考えずに移行した際に 怒られた話です。

1.発生事象

何も考えずに移行した後、いつものように npm run dev すると以下のように怒られました。

 ERROR  ERROR in /Users/endo/{プロジェクト名}/{フォルダ名}/{ファイル名}.ts                                                                      09:38:19
89:32 Property {パラメータ名} does not exist on type '{}'.

ページは見えるのですが気持ち悪いですね。
これでも動くは動くんですよ。

2.原因調査

恒例のstackoverflow先輩!!!
https://stackoverflow.com/questions/34274487/property-does-not-exists-on-type

let bar = <any>{};
bar.foo = "foobar"; 

なるほど型を指定しないとダメなようです。
{パラメータ名}はクラス定義したものから参照していたのですが、そのためエラーが出ていました。
今回はanyにしないとダメですね。

3.対応

stackoverflow先輩の言うとおりにします。

let {パラメータ名} = <any>{};

image.png

🎉🎉🎉🎉🎉🎉

4.まとめ

早く型安全な世界にしたい

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした