ガクセイハッカソン

WebエンジニアのためのDart入門 〜JS・TSとの比較で理解〜

2022-10-04 公開

はじめに

Dartは、Googleが開発しているプログラミング言語です。Dartを用いたFlutterというモバイルアプリのフレームワークが有名ですが、今回はWebエンジニア向けに、Dartの特徴をJavaScript、TypeScriptと比較しながら解説します。

Dartの特徴

Dartの特徴を4つ紹介します。

1. 静的型付け

Dartは静的型付け言語です。TypeScriptでの型指定に似た構文で変数や引数の型を指定します。

// JavaScriptの変数定義(型なし)
let name = 'Alice';
const age = 25;
// Dartの変数定義(型あり)
String name = 'Alice';
int age = 25;

2. 型推論

Dartではvarを使って型推論ができます。TypeScriptと同様に、型を明示せずに書くこともできます。

// JavaScriptの変数定義(型なし)
let name = 'Alice';
let age = 25;
// Dartの変数定義(型推論)
var name = 'Alice';
var age = 25;

3. null安全

Dartはnull安全です。Dartでは、デフォルトでnullを許可せず、nullを許可する場合は?を付けます。TypeScriptのオプショナルと似た概念です。

// JavaScriptのnull許容
let name = null;
// Dartのnull安全
String? name = null; // nullを許可する場合は?を付ける

4. 非同期処理

Dartの非同期処理は、JavaScriptのasync/awaitと同様の構文で書けます。

// JavaScriptの非同期処理
async function fetchData() {
  const data = await fetch('https://example.com');
  return data;
}
// Dartの非同期処理
Future<String> fetchData() async {
  final data = await http.get('https://example.com');
  return data.body;
}

論理値について

JavaScriptでは、論理値に変換するとfalseとして扱われる値がいくつかあります。

// JavaScriptのfalsy値の例
if (!0) console.log('0はfalsy');
if (!'') console.log('空文字はfalsy');
if (!null) console.log('nullはfalsy');
// Dartでは明示的にboolを使う
if (0 == 0) print('Dartでは0はboolではない');

このように、JavaScriptにおいて論理値に変換するとfalseとして扱われる値は、全部で8種類あります。
https://developer.mozilla.org/ja/docs/Glossary/Falsy

Dartのサンプルコード

void main() {
  String message = 'Hello, Dart!';
  print(message);
}

まとめ

今回は、WebエンジニアがDartを学ぶ際に知っておきたい特徴を、JavaScript・TypeScriptと比較しながら解説しました。

関連記事