Search
Ad
|
新規
下位
一覧
検索
最新
ヘルプ
ページへ戻る
編集
複製
履歴
添付
印刷
TypeScriptのジェネリック
をテンプレートにして作成
xpwiki
:TypeScriptのジェネリック をテンプレートにして作成
開始行:
*ジェネリックの概要
ジェネリックとは型の変数のような物。総称型、パラメタ付型...
たとえば引数と戻り値の関数を考える。number型なら、
function testFunction(n:number):number{
return n;
}
となる。
引数と戻り値が同じという条件のみ課したいが、
function testFunction(n:any):any{
return n;
}
としてしまうとそうはならない。
そこで、ジェネリックを使う。
function testFunction<T>(n:T):T{
return n;
}
使うときは、「<T>」の部分に型を入れる。
console.log(testFunction<number>(2)); // => 2
console.log(testFunction<string>("string")); // => string
つまり、あたかも型を変数のように扱っている。
この例だとあまりありがたみが無い。しかし、次のようにたと...
function getThird<T>(n:T[]):T{
return n[2];
}
console.log(getThird<number>([1,2,3,4])); // => 3
console.log(getThird<string>(["one","two","three","four"...
このような配列の要素を返したり、引数の配列を返したりする...
二つ以上のジェネリックを定義するときは、「<>」の中にコン...
function testFunc<U,T>(U,T):U{
//何か処理
}
*ジェネリックの型
型定義にもジェネリックは使える。
var func: <T>(n: T[])=>T = getThird;
こちらの書き方でも良い。
var func: {<T>(n: T[]):T} = getThird;
インターフェイスにも利用できる。
interface GenericGetThird {
<T>(n: T[]):T;
}
*クラス定義でのジェネリック
クラス定義でもジェネリックは利用できる。
class TestClass<T>{
x:T;
concat(x:T,y:T):T[]{
this.x = x;
return [x,y];
}
}
var numCat:TestClass<number> = new TestClass<number>();
var strCat:TestClass<string> = new TestClass<string>();
console.log(numCat.concat(1,2));// => [1,2]
console.log(numCat.x);// => 1
console.log(strCat.concat("one","two"));// => ["one","tw...
console.log(strCat.x);// => "one"
console.log(strCat.concat(1,2));//エラー
*ジェネリックを継承で制限
<T extends BaseClass>
と書くとTはBaseClassを継承した物で無ければエラーが出る。
終了行:
*ジェネリックの概要
ジェネリックとは型の変数のような物。総称型、パラメタ付型...
たとえば引数と戻り値の関数を考える。number型なら、
function testFunction(n:number):number{
return n;
}
となる。
引数と戻り値が同じという条件のみ課したいが、
function testFunction(n:any):any{
return n;
}
としてしまうとそうはならない。
そこで、ジェネリックを使う。
function testFunction<T>(n:T):T{
return n;
}
使うときは、「<T>」の部分に型を入れる。
console.log(testFunction<number>(2)); // => 2
console.log(testFunction<string>("string")); // => string
つまり、あたかも型を変数のように扱っている。
この例だとあまりありがたみが無い。しかし、次のようにたと...
function getThird<T>(n:T[]):T{
return n[2];
}
console.log(getThird<number>([1,2,3,4])); // => 3
console.log(getThird<string>(["one","two","three","four"...
このような配列の要素を返したり、引数の配列を返したりする...
二つ以上のジェネリックを定義するときは、「<>」の中にコン...
function testFunc<U,T>(U,T):U{
//何か処理
}
*ジェネリックの型
型定義にもジェネリックは使える。
var func: <T>(n: T[])=>T = getThird;
こちらの書き方でも良い。
var func: {<T>(n: T[]):T} = getThird;
インターフェイスにも利用できる。
interface GenericGetThird {
<T>(n: T[]):T;
}
*クラス定義でのジェネリック
クラス定義でもジェネリックは利用できる。
class TestClass<T>{
x:T;
concat(x:T,y:T):T[]{
this.x = x;
return [x,y];
}
}
var numCat:TestClass<number> = new TestClass<number>();
var strCat:TestClass<string> = new TestClass<string>();
console.log(numCat.concat(1,2));// => [1,2]
console.log(numCat.x);// => 1
console.log(strCat.concat("one","two"));// => ["one","tw...
console.log(strCat.x);// => "one"
console.log(strCat.concat(1,2));//エラー
*ジェネリックを継承で制限
<T extends BaseClass>
と書くとTはBaseClassを継承した物で無ければエラーが出る。
ページ名:
ぺージ情報
ぺージ名 :
TypeScriptのジェネリック
ページ別名 :
未設定
ページ作成 :
njf
閲覧可
グループ :
すべての訪問者
ユーザー :
すべての訪問者
編集可
グループ :
すべての訪問者
ユーザー :
すべての訪問者
Counter: 0, today: 0, yesterday: 0
MenuBar
20
最新の0件
広告
ログイン
ユーザー名:
パスワード:
パスワード紛失