😔

[Dart]partとimportの違い

2022/02/16に公開

はじめに

こんにちは、Ryo24です。
Dartはpartimportの2種類でファイルを参照することができます。
本記事は2つの違いと使い分けに関して自分用のメモとして書きました。

partとimportの違いは何?

partとは

partpart ofとセットで使い、プログラムを分割します。

one.dart
part 'two.dart';

test();  // print 'test'
two.dart
part of 'one.dart';

void test() {
    print('test');
}

one.dart(part)の拡張としてtwo.dart(part of)があります。

importとは

importはファイルを参照します。

one.dart
import 'two.dart';

test();  // print 'test'
two.dart
void test() {
    print('test');
}

違いは何?

一見、partimportの違いわかりません...
この2つの違いは、

In Dart, private members are accessible within the same library. With import you import a library and can access only its public members. With part/part of you can split one library into several files and private members are accessible for all code within these files.
引用元: When to use part/part of versus import/export in Dart?

つまり、

  • part : publicprivateどちらも読み込む
  • import : publicしか読み込まない

上記の違いがあり、参照内容が完全に異なることがわかります。

結論

基本的にimportを使いましょう。

partを使うタイミング

freezedをはじめとする、コードを自動生成する実装で使う。

importを使うタイミング

コンポーネントを活用し、機能を追加するときに使う(= 基本的にこいつを使う)。

参考文献

https://stackoverflow.com/questions/27763378/when-to-use-part-part-of-versus-import-export-in-dart

https://dart.dev/guides/libraries/create-library-packages#organizing-a-library-package

GitHubで編集を提案

Discussion