✅
一般的にやるReact props型定義、typescriptのパーフォマンス悪化させてるよ
はじめに
以下はIDE(typescript server)とトランスパイルのパーフォマンスを悪化させる原因になります。
import React from "react";
type ButtonProps =
React.HTMLAttributes<HTMLButtonElement> & {
tsuikaProp: string;
}; //❌遅い
どうしたらいい?
interface型を使う
import React from "react";
interface ButtonProps
extends React.HTMLAttributes<HTMLButtonElement> {
tsuikaProp: string;
} //✅早い
なぜ?
type & type
と interface extends type
の型の結合方法の違いが原因です。
type & type
はインターセクション型に該当します。
インターセクション型は、1つ以上の型を結合して新しい型を作成します。この結合処理には、複数の型のプロパティやメソッドを結合するための処理が含まれます。interface extends type
は継承関係を使って型を定義するため、型の結合が比較的シンプルです。Typescriptコンパイラーに与える値が複雑ほど、型推論が大変のことですね。
Discussion