BT

Object型,ミックスインサポート改善などが加えられたTypeScript 2.2

| 作者: Sergio De Simone フォローする 12 人のフォロワー , 翻訳者 h_yoshida フォローする 1 人のフォロワー 投稿日 2017年3月2日. 推定読書時間: 3 分 |

原文(投稿日:2017/02/10)へのリンク

2月中に予定されているリリースで,TypeScript 2.2はRCに到達する。React Native用の新たなJSX emitモードに加えて,非ネイティブ型を表現するobject型,ミックスインのサポート向上,構成可能(composable)なクラスなどが新たに含まれている。

TypeScript 2.2の提供する新しいobject型は,非プリミティブ型のみを受け入れるメソッドのシグネチャを指定するためのものだ。Object.getPrototypeOfObject.createといった,構文的には任意のオブジェクトを受け入れるが,文字列や数値が渡された場合に例外をスローするような場合がこれにあたる。object型を使うことで,こういった誤用をコンパイル時に検出することが可能になる。

  function mapObject(obj: object): object { /* ... */ }
  ...
  mapObject('string'); // 型エラー

TypeScript 2.2では,ミックスインと構成可能な型の生成に関する柔軟性も向上している。例えば,Pointオブジェクトのコンストラクタを取得して,timestampを追加することでPointを拡張し,インスタンス化と拡張の可能な新しいTimestampedPointミックスインクラスを返す関数を作成できるようになった。

class Point {
  ...
}

export type Constructable = new (...args: any[]) => object;
export function Timestamped<BC extends Constructable>(Base: BC) {
    return class extends Base {
        timestamp = new Date();
    };

const TimestampedPoint = Timestamped(Point);
const p = new TimestampedPoint(10, 10);

class SpecialPoint extends Timestamped(Point) {
  z:  number;
  constructor(x: number, y: number, z: number) {
    ...
  }

}

TypeScriptでは,セマンティクスの拡張なしで属性を持つツリー構造を表現するために,XML風の言語拡張であるJSXが以前からサポートされていた。唯一ではないが典型的なJSXの用途は,UIコンポーネントの記述だ。バージョン2.1までのTypeScriptでは,tsxファイルに記述されたJSX式を扱うために,JSX式を保持して後段の処理で使用可能にするpreserveと,React.createElementを用いるjsファイルを生成するreactという,2つの特別なemitモードが用意されていた。バージョン2.2で新たに設けられたreact-nativeモードは,JSX式をすべてそのまま残しながら,React Nativeのローダに必要なjsファイルを生成する。

TypeScript 2.2rcにはこの他にも,次のような注目すべき変更が含まれている。

TypeScript 2.2rcを試すには,次のコマンドを実行すればよい。

npm install -g typescript@rc
 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT