ウェブサイト検索

yarnpkg - YarnにTypeScriptの型定義をフラット化させるにはどうすればよいですか?


私は @types/react と @types/react-dom の両方をインストールしました。たとえば、以前はバージョン15だったとしましょう。その後、yarn upgrade @types/react@16 @types/react-dom@16 を使って両方をアップグレードしました。

@types/react-dom は @types/react に依存関係を宣言しており、"@types/react": "*" を使用しています。つまり、インストールされた新しいバージョンでも動作するはずです。しかし、どうやら Yarn は @types/react@* の依存関係を @types/react@^15.0.22 に固定しているようです。

これの結果として、@types/react-dom は React の型定義を独自に持っており、まだ v15 のままです。そのため、TypeScript は型定義が重複していると文句を言い始めます。

v16 に移行する適切な方法は何ですか?yarn.lock を手動で編集するのを避けることはできますか?

回答 #1

将来これを見つけた人のためのメモ: 今のところ私が使用している回避策は、yarn.lock を手動で編集することです:

-"@types/react@*", "@types/react@^15.0.22":
+"@types/react@^15.0.22":
  version "15.0.24"
  resolved "https://registry.yarnpkg.com/@types/react/-/react-15.0.24.tgz#8a75299dc37906df327c18ca918bf97a55e7123b"

-"@types/react@^16":
+"@types/react@*", "@types/react@^16":
  version "16.0.9"
  resolved "https://registry.yarnpkg.com/@types/react/-/react-16.0.9.tgz#2ad952abbb22617620927694f9a4bce292d7fb2b"

言い換えると、@types/react@* を指している依存関係は、@types/react@^16 を指しているものと同じ結果に解決されるべきだと示しています。