1 名前:デフォルトの名無しさん [2015/04/30(木) 18:37:29.98 ID:ynMflk1l.net] www.typescriptlang.org/ TypeScript lets you write JavaScript the way you really want to. TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. Any browser. Any host. Any OS. Open Source. 前スレ peace.2ch.net/test/read.cgi/tech/1349187527/
2 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 11:16:24.11 ID:O5IrbREb.net] https://twitter.com/ironshay/status/593855606747860992 Anders, father of C#, and Misko, father of angular, on the same stage at Build2015.
3 名前:デフォルトの名無しさん [2015/05/01(金) 12:23:58.69 ID:Cd44J9+J.net] >>2 MSとGoogle夢の共演
4 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 16:28:43.35 ID:Cd44J9+J.net] Announcing TypeScript 1.5 Beta blogs.msdn.com/b/typescript/archive/2015/04/30/announcing-typescript-1-5-beta.aspx しかし、いきなり大量のコンパイルエラーが… まだ更新しない方が良さそう
5 名前:デフォルトの名無しさん mailto:sage [2015/05/03(日) 17:06:42.35 ID:rBxa49N8.net] インストールしたら1.5 Betaが入りました。 $ tsc sample.tsでコンパイルしたjavascriptファイルを$ node sample.jsで実行すると __.prototype = b.prototype;の箇所でエラーになるんですが typescriptの書き方でおかしいところを教えてください module M { export interface aInterface { f1(): void; } export interface bInterface { f2(): void; } class A extends B implements aInterface { f1() { console.log(1); } } class B implements bInterface { f2() { console.log(2); } } }
6 名前:デフォルトの名無しさん mailto:sage [2015/05/03(日) 17:38:50.79 ID:RegehUyj.net] >>5 BをAより前に書く
7 名前:デフォルトの名無しさん mailto:sage [2015/05/03(日) 18:27:42.73 ID:H+7a6WF5.net] >>6 できました ありがとうございます
8 名前:デフォルトの名無しさん mailto:sage [2015/05/12(火) 21:39:01.53 ID:bsrem9uN.net] typescriptの勉強の為、型推論とanyを使わない書き方を知りたいのですが コンパイルすると error TS2339: Property 'classList' does not exist on type 'EventTarget'. ってエラーが出ます。 (1)と(2)の行を型指定しなければエラーが出ないのですが、どのような型を指定したらエラーがでないのでしょうか? class A { eventFunc(e: MouseEvent) { // (1) var target:EventTarget = e.target; // (2) target.classList.add('red'); } f() { window.addEventListener('click', this.eventFunc, false); } }
9 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 08:53:02.33 ID:8FgeUemt.net] (2)をvar target = <Element>e.target;でいいんじゃないかな DOMの仕様でtargetがElementではないケースがあるのかどうか知らないけど、少なくとも自分で扱う範囲なら問題ないでしょ
10 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 10:56:22.23 ID:2k7sC9bw.net] >>8 classListだから var target = <HTMLElement>e.target; または var target: HTMLElement = e.target; じゃないかな? 分からない場合はlib.d.tsを見ればいいよ
11 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 17:58:04.11 ID:EXojY7d0.net] 最初の頃は律儀に型指定してたけど面倒くさいからもうやってない コンパイル速度が上がるわけでもない。
12 名前:デフォルトの名無しさん mailto:sage [2015/05/14(木) 11:17:19.81 ID:gHUa6+Se.net] tsc --noImplicitAnyでかつ明示的にanyを使ってなくてエラーがでなければ 型安全が保たれてるから何も毎回型指定する必要はないよ ただjquery.d.tsとかanyだらけなんで実行しないとエラーが出ない事とかよくある 単純にjQuery使う程度ならJavaScriptのままでいいとは思う
13 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 21:53:08.26 ID:jTi6Q4y/.net] やっぱ堅い仕様で書いてるとtscでインライン化して欲しくなっちゃうなぁ
14 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 11:52:22.54 ID:QvLzrgmO.net] >>13 インライン化し始めるとjsのソースがグチャグチャになりそうだ get,setはあるんだからそれでいいんじゃないの?
15 名前:デフォルトの名無しさん mailto:sage [2015/06/06(土) 09:46:32.31 ID:be84NOOA.net] >>14 うちの場合JavaScriptはただの実行ファイル扱いだからね デバッグはソースマップなりインライン化の無効なりできればいいんじゃないかな
16 名前:デフォルトの名無しさん mailto:sage [2015/06/07(日) 13:32:40.51 ID:yxti539q.net] 1.5がなかなか正式リリースされないのはなんでぞ
17 名前:デフォルトの名無しさん mailto:sage [2015/06/07(日) 20:32:21.84 ID:4Wk1GroN.net] >>16 元々の予定にはなかったDecoratorを入れたからじゃないかな 仕様の検証の為に1.5AlphaやBetaを挟んだのだと思う
18 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 14:13:38.63 ID:X0sByrSC.net] >>15 インライン化がもし速度の為だったら速くなるかどうかは未知数だな JITコンパイラの高速化の癖というか挙動を予測するのはかなりむずい あくまで主観だけど長くなった関数は高速に実行されにくくて 細かく関数に分けた方が速くなる気がする (実際にそういう事はあった) 関数単位でコンパイルするしないを決めてるっぽいし
19 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 22:54:39.34 ID:wugeehUL.net] >>17 サンキュー
20 名前:デフォルトの名無しさん mailto:sage [2015/06/10(水) 17:03:59.59 ID:/7VhIJtD.net] 解析によるインライン化はtscでもJITでも好きにしてくれていいけど inlineキーワードで明示できた方が気持ち的にスッキリする
21 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 11:14:55.39 ID:kEEgKM4/.net] ES6がいろんなブラウザで動かせるようになった頃にTypeScriptってどうなるの?
22 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 13:05:05.85 ID:4ooRsfQ9.net] ECMAScript2015(旧ES6)がリリースされたんだな >>21 TypeScriptの最大のメリットは静的型チェックだから有用性は全く変わらない 他にもprivate指定とかも有用だし既にES7(ES2016?)の仕様も先取りしようとしてるよ
23 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 12:12:04.05 ID:6sfBPUUP.net] newさせないようにコンストラクターを非公開にしたい 現状でも実現できるけど、そのためにインターフェースを2つも書くのは面倒くさい
24 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 10:51:34.25 ID:4m+kxR2f.net] blogs.msdn.com/b/typescript/archive/2015/07/13/the-typescript-team-is-hiring.aspx TypeScript Teamの求人だってさ
25 名前:デフォルトの名無しさん [2015/07/21(火) 01:31:13.85 ID:/gCXtG+X.net] Announcing TypeScript 1.5 blogs.msdn.com/b/typescript/archive/2015/07/20/announcing-typescript-1-5.aspx VS2015と合わせてきたか
26 名前:デフォルトの名無しさん mailto:sage [2015/07/21(火) 01:32:58.22 ID:/gCXtG+X.net] https://github.com/Microsoft/TypeScript/wiki/Roadmap >1.6 >ES6 Generators >Local types >Generic type aliases >Expressions in class extends clauses >Class expressions >exclude property in tsconfig.json >User defined type guard functions >async/await for ES6 >External module resolution enhancements >JSX support >Intersection types >abstract classes and methods 次の仕込み進んでるね
27 名前:デフォルトの名無しさん mailto:sage [2015/07/21(火) 02:33:09.52 ID:rWNspVF5.net] 昔はJScriptという亜種JavaScriptを作っていたMSが 今はJavaScriptの未来を作ってるんだから興味深いよ。 V8を作ってるGoogleが作ってるAngularJSが TypeScriptを採用してるっていうんだからね。 世の中何が起こるかわからない。
28 名前:デフォルトの名無しさん mailto:sage [2015/07/21(火) 10:29:14.64 ID:JRZO1Ijb.net] ES6以降の見識とかモダン言語のたしなみがないと新機能を追いかけるのは難しくなってきてるな
29 名前:デフォルトの名無しさん [2015/09/03(木) 18:56:51.43 ID:nwE/lfZd.net] Announcing TypeScript 1.6 Beta blogs.msdn.com/b/typescript/archive/2015/09/02/announcing-typescript-1-6-beta-react-jsx-better-error-checking-and-more.aspx
30 名前:デフォルトの名無しさん mailto:sage [2015/09/09(水) 13:41:12.43 ID:/LabsqIc.net] node.js 4.0.0 がリリースされたけど tsc 1.5.3 でのコンパイルは問題なかったよ
31 名前:デフォルトの名無しさん [2015/09/17(木) 11:57:54.97 ID:EJYiGj1J.net] TypeScript 1.6 来た! blogs.msdn.com/b/typescript/archive/2015/09/16/announcing-typescript-1-6.aspx classとか型関連の機能追加が多いかな
32 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 13:08:48.57 ID:1pEQnj0M.net] 日本語で更新内容を教えて
33 名前:デフォルトの名無しさん [2015/09/17(木) 13:39:47.54 ID:EJYiGj1J.net]
34 名前:>>32 誰かがブログで解説するだろうからそれを待て あと1.6でオブジェクトリテラルの型チェックが厳密になって大量のエラーが… https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes ↑ここに対処法とか書いてあるからバージョンアップする場合は見るべし [] [ここ壊れてます]
35 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 00:34:58.40 ID:RRhCs/3r.net] >>32 TypeScript 1.6.0-beta 変更点 qiita.com/vvakame/items/072fa78f9fe496edd1f0 TypeScriptがReactをサポート www.infoq.com/jp/news/2015/09/typescript16-react 1.6betaの記事だけど、1.6正式版でも同じだよ
36 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 13:25:38.28 ID:5DFpZmVK.net] typescriptって型を省略せずに書くのが王道なの?どうなのかおしえてください
37 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 13:57:38.01 ID:k2h28xWP.net] >>35 var a = 1; は型を省略して書いてるように見えるが型推論されてaはnumber型に固定される その後a = "hoge";と書くとエラーになる 型推論をあてにして型を省略するのは普通だがそういう事を聞いてんの?
38 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 14:07:02.02 ID:YDlHSLNo.net] partialはサポートしてないんですよね?
39 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 14:10:18.85 ID:RAm+PgpZ.net] >>36 これからは型をかかないようにします
40 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 18:23:15.46 ID:c/9pCOim.net] 関数の引数の型は書いて下さいね あと --noImplicitAny は忘れずに
41 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 18:44:40.47 ID:JwHQ7pBT.net] --noImplicitAny を付けてれば引き数の型を書かないとエラーになるけど 戻り値の型は省略できてしまう コンパイラは型推論で戻り値の型は分かるから補完候補の表示で型は分かるけど 戻り値の型もちゃんと書いた方がいいね そうすると整数を返す予定だったところを文字列返しちゃった時にエラーになる
42 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 02:53:49.54 ID:HtrqvoEB.net] >>37 対応してませんね けれど前から提案はされていて、C#と異なる使い方も模索されているみたいです Partial classes https://github.com/Microsoft/TypeScript/issues/563 Suggestion: Reopen static and instance side of classes https://github.com/Microsoft/TypeScript/issues/2957
43 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 12:29:38.37 ID:O/xnKl5a.net] >>41 そういうのはinterfaceとかmodule(namespace)を使えば実用上困ることは 無いと思うからいらないでしょ
44 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 10:49:02.03 ID:HkSezUmR.net] コードの中にnew Promiseを書くと tsc test.tsでチェックしたら error TS2304: Cannot find name 'Promise' って出るんですがこれはどうしたらでなく出来ますか?
45 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 11:10:26.45 ID:x61qrQJS.net] >>43 tsc --target ES6 にするかそれが無理なら https://github.com/borisyankov/DefinitelyTyped/tree/master/es6-promise からes6-promise.d.tsを落としてくる
46 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 11:39:52.85 ID:HkSezUmR.net] --target ES6を指定します どうもありがとうございます
47 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 18:36:19.11 ID:OMUtivN5.net] var i; var l; var a = [ {"a":1}, {"b":1}, ] for (var i = 0; i < a.length; i++) { console.log(a[i]); } コンパイルすると TS2403: Subsequent variable declarations must have the same type. Variable 'i' must be of type 'any', but here has type 'number' ってなるんですがよく分かりませんどうかけばいいんでしょうか
48 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 23:27:40.80 ID:x61qrQJS.net] >>46 エラーメッセージが理解出来れば分かる事ではあるが… var i; ← iの型がany for (var i = 0; ← iの型がnumberだから矛盾してると言ってる var i;を消すかvar i: number;とすればいいよ
49 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 13:23:21.78 ID:DvM48NAd.net] 超超初心者なんですが 仮にグローバルで宣言したiがforでなく別の関数で使われることを意図していた場合 >>46 のように変数iをfor文でたまたま同じ名前の制御変数としてvar宣言すると思うのですが このときvarが付いているにも関わらずfor文のiは一行目で宣言したiとみなされてしまうってことですか?
50 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 13:37:43.55 ID:khdgfcjT.net] >>48 JavaScriptのvarはブロックスコープの機能が無い (詳細はググるなりしてくれ) 直感的にしたければES6のletを使うしかない
51 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 13:41:16.06 ID:bHkc51Yk.net] TSはES5ターゲットでもlet/const使えるからへーきへーき
52 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 13:42:29.90 ID:khdgfcjT.net] >>48 いや間違えた…TypeScriptは普通にletが使えるからletを使えばいい >>46 のvarをletに書き換えるだけでうまく行くよ
53 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 13:44:14.49 ID:khdgfcjT.net] かぶった…まぁそういう事だ
54 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 13:49:24.42 ID:DvM48NAd.net] >>49 ああ!ifやforは関数ではないからvarつけても同名のグローバルを見に行っちゃうんですね! そこで出てくるのがlet/constか!なっとく!
55 名前:デフォルトの名無しさん [2015/10/05(月) 00:57:09.65 ID:908hRhwN.net] >>53 let使える前のjsの変数スコープは基本的に関数レベルだったんだよ。 rubyやpythonとかもそうだったりする。
56 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 21:21:16.18 ID:8y87T4ny.net] 1.7のissue残り3つ そろそろ来るか
57 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 09:45:15.72 ID:cndR1OOY.net] issueが0になってからリリースまで1ヶ月以上掛かるし 1.6がリリースされた時は1.6.2だったからもう少し先な気がする
58 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 16:42:41.11 ID:/J6P+2iK.net] ポリモthisが待ち遠しい
59 名前:デフォルトの名無しさん mailto:sage [2015/10/23(金) 19:57:18.48 ID:uz+nJ7WP.net] >>57 ポリモthisって変数の受け取り側で(ダウン)キャストしないで済むって事でしょ? そんな待ち遠しいって何か便利な使い方とかあるの?
60 名前:デフォルトの名無しさん mailto:sage [2015/10/23(金) 23:22:47.24 ID:vOh1PKiJ.net] interface IEquatable { equals(other: this): boolean } とかかな
61 名前:デフォルトの名無しさん mailto:sage [2015/10/23(金) 23:33:29.49 ID:oFKlQBDH.net] typescriptで使いやすいEditorでおすすめってなんですかね? MS由来からいってVSなんでしょうけど、当方Macなので、、、、
62 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 11:24:42.03 ID:lLID1QIl.net] >>60 ttps://github.com/Microsoft/TypeScript/wiki/TypeScript-Editor-Support 普段何使ってるんだよ Vimは導入が難しいが、何するにしても特化した環境が作れるぞ
63 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 14:26:29.93 ID:otxAXsrh.net] >>59 class Base { getThis(): Base { return this; } } class Derived extends Base { print(): void { console.log('Derived'); } } let derived = new Derived(); derived.getThis().print(); // 1.6.2だとBaseにprint()がねーよと怒られる 1.7だと getThis(): this { return this; } にする事でコンパイル通ってちゃんと実行も出来る って事は理解したけど、equals(other: this)のthisって自分の型名のエイリアス として使えるから便利って事であってるの?
64 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 14:31:41.39 ID:otxAXsrh.net] >>60 Emacsと https://github.com/ananthakumaran/tide ↑を使う事でVSに劣らないインテリセンス環境が出来上がるぞ(ページ内のscreencastを見るべし!) ちなみに常用してるけどMac版Emacsは使った事ないから詳細は分からん
65 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 14:48:22.39 ID:otxAXsrh.net] >>59 class Base { equals(other: this): boolean { return other.name === "Derived"; } } class Derived extends Base { name = "Derived"; } let derived = new Derived(); console.log(derived.equals(derived)); だと、1.7でも(正確には1.7.0-dev.20151016) test.ts(3,18): error TS2339: Property 'name' does not exist on type 'Base'. って、ポリモらないけど…なんでなん?
66 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 16:15:55.69 ID:plgIlyg5.net] >>63 >>61 情報ありがとうございました。結局atomに落ち着きました。 最初補完効かないじゃんとか思ってましたが、tcconfig.jsを作ったら機能したので 問題なさそうです。 emacsかvimかで言ったらvim寄りですが、設定の手間とかいろいろ考えたら atomが一番楽です。すいません。
67 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 17:46:56.82 ID:lLID1QIl.net] >>64 そういった使い方は無いと思うよ。その場合はジェネリックを使うといい class Base { equals<T extends { name: string; }>(other: T): boolean { return other.name === "Derived"; } }
68 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 00:25:48.72 ID:1wUVsAr0.net] >>66 https://github.com/Microsoft/TypeScript/pull/4910 このページのサンプルコードで>>64 みたいなのがあったよ >>62 の戻り値バージョンは直感的で使い易いし良いんだけど 引き数バージョンがポリモらないのは何か変だなとは思う ま、ジェネリックがあるから困らないけど1.7がちゃんとリリースされたら また確認してみよう
69 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 07:40:54.38 ID:bIzVFZFH.net] >>67 Baseがあとからどう拡張されるかなんてわかるわけないだろ 未来予知でもさせる気か
70 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 15:05:43.36 ID:MYRFLLoW.net] >>68 コールの仕方がderived.equalsなんだから未来予知なんてしなくたって コンパイル時にthisがDerivedなのが決まるでしょ (ジェネリックの場合はTがDerived) C++は呼び出した時に型を決めてコンパイルされるからそういうのが当たり前だけど TypeScriptはジェネリックとかも先にコンパイルしようとすんだな とりあえずそういう仕様なのは理解したよ
71 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 20:07:24.22 ID:bIzVFZFH.net] >>69 それは>>67 のいうところの戻り値バージョンだろ Baseの中のthisはBaseでしかない
72 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 11:50:38.96 ID:2PrT+848.net] >>70 は?継承されたメソッドのderived.equalsでアクセスしてんのにthisがBaseなわけないだろ お前が言ってんのは字面上の事だろ だからC++はジェネリック(テンプレート)は呼び出された時しかコンパイルされないんだよ TypeScriptもそうだと思っていたと先に書いただろ equals(other: this)もジェネリックと同じようなもんだろうと思っていたんだよ 同じ事なんど
73 名前:煬セわせるな [] [ここ壊れてます]
74 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 12:01:33.27 ID:2PrT+848.net] ちなみに>>64 のコードはコンパイルエラーは出力されるが吐き出された.jsを 実行すると問題なく実行出来る JavaScriptは動的型だから当然だけど、TypeScriptもジェネリック(とポリモthis)は 呼び出し時に毎回コンパイルした方がよりJavaScriptに近くなるとは思うけどね (コンパイルというか型チェックだけだが)
75 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 13:14:02.12 ID:Jg07UfdQ.net] エラーになってるのに何とち狂ってんだ お前はもうそう思い込んでていいから他の人間に迷惑かけるなよ
76 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 13:23:02.34 ID:2PrT+848.net] >>73 言ってる意味が理解出来ないなら無理に意味不明な返答しなくていいよ
77 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 13:29:03.77 ID:rrrZ2q/W.net] C++のテンプレートではそうじゃないみたいだけど 他言語のジェネリクスやらパラメータ多相だと型引数T(ここで言えばthis)がnameを持つって制約がなけりゃ other.nameとかやってる時点でコンパイルエラーになるのが普通 呼び出し側でどう呼び出されてようが知らん
78 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 13:40:49.36 ID:2PrT+848.net] だから説明してくれなくてもTypeScriptの仕様は知ってるよ class Base { getThis(): this { return this; } } class Derived extends Base { name = "Derived"; } let derived = new Derived(); console.log(derived.equals(derived)); // OK:コンパイルも実行も問題ない この場合のgetThis(): this { return this; }はBaseにあるのに型はDerivedになる それがポリモthis 引き数版もそうだと思ったら違ったから変だなとおもっただけだ つうか何回同じ事書かせるんだよ…
79 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 13:42:45.78 ID:2PrT+848.net] 間違えた… > console.log(derived.equals(derived)); derived.getThis().print();
80 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 13:45:10.06 ID:2PrT+848.net] class Base { getThis(): this { return this; } } class Derived extends Base { print(): void { console.log('Derived'); } } let derived = new Derived(); derived.getThis().print(); // OK:コンパイルも実行も問題ない なんどもゴメンよ…こっちだった
81 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 15:10:36.99 ID:rrrZ2q/W.net] class Base { identity(a: this): this { return a; } } class Derived extends Base { /*略*/ } let derived = new Derived(); derived.indentity(derived) // => Derived これで戻り値だろうが引数だろうがthis型の意味が変わらんのは分かるだろ んでもうひとつ 親クラスの中で子クラスの実装に依存するような定義することがおかしいと思わんのか テンプレートみたいにthisを具体的な型に置き換えたメソッドを実際に生成してくれるって訳じゃねーんだぞ
82 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 15:38:26.33 ID:2PrT+848.net] >>79 > identity(a: this): this { return a; } なるほど結局やってくれるのはキャストだけって事だな > 親クラスの中で子クラスの実装に依存するような定義することがおかしいと思わんのか いや別に…ジェネリックとかは equals(other: Derived): boolean; equals(other: Hoge): boolean; equals(other: any): boolean { return other.name === "Derived"; } を短く書けるってだけだぞ やってる事はいたって普通じゃん
83 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 15:41:54.45 ID:2PrT+848.net] equals(other: any): boolean { return other.name === "Derived"; } よく考えたらこれで良かったなw
84 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 17:12:36.83 ID:RV+rpgqN.net] VisualStudioでTypeScriptを始めてみたのですが加算が上手く出来ません。 数値で入力して数値で計算しているつもりですが文字列の連結になってしまいます。 以下のソースのどこかに問題がありますでしょうか? それとも加算の時は明示的にNumberを付けるのが暗黙の了解なのでしょうか? ■index.htmlに以下を追加 <input id="id1" type="number" value="100" /> <input id="id2" type="number" value="50" /> <button type="button" onclick="MyCalc(document.getElementById('id1').value, document.getElementById('id2').value, 'id3');">Calc</button> <p id="id3"></p> ■app.tsに以下を追加 function MyCalc(a: number, b: number, idOut: string) { var add: number = a + b; // ←文字列の連結になる //var add: number = Number(a) + Number(b); // ←数値の加算になる document.getElementById(idOut).innerHTML = add.toString(); }
85 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 17:29:52.14 ID:68zEKPr/.net] ゴミだな
86 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 17:30:24.13 ID:2PrT+848.net] >>82 html内のJavaScriptから.ts内の関数を呼んでも型を変換してくれるわけじゃないよ だからaもbも文字列が渡ってきてる
87 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 18:04:54.71 ID:68zEKPr/.net] つまり、 function MyCalc(a: number, b: number, idOut: string) { var add: number = Number(a) + Number(b); document.getElementById(idOut).innerHTML = add.toString(); } とすべきである、と。 何このゴミ言語。
88 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 18:05:52.22 ID:jZMivBq6.net] 根がjavascriptだからな 腐っておる
89 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 20:48:07.59 ID:Jg07UfdQ.net] 今日は大漁だなぁ
90 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 21:03:54.01 ID:2PrT+848.net] >>85 MyCalcに文字列を渡してるのは理解してんの?
91 名前:82 mailto:sage [2015/10/26(月) 21:09:33.30 ID:+CoO9wxe.net] >>84 tsの引数でnumberと指定しているところにhtmlからstringを渡してるのにエラーでないのが正常ってことですか。 なんとも言えないモヤモヤ
92 名前:した気分ですがそういうものだと思って納得します。 ありがとうございました。 [] [ここ壊れてます]
93 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 23:08:05.78 ID:xkX95Mex.net] そもそも今時htmlファイルにJSのコードがあるのがクソ
94 名前:デフォルトの名無しさん mailto:sage [2015/10/27(火) 10:15:27.19 ID:VNkjK7Q1.net] >>88 > MyCalcに文字列を渡してるのは理解してんの? 誰が何を渡すなんか関係ないよ。 MyCalc()がMyCalc()たり得るためには、>>85 のようにしなければならないってことでしょ。
95 名前:デフォルトの名無しさん [2015/11/01(日) 10:08:53.87 ID:zBN3V9bR.net] ジェネリックと書かれると黒柳徹子の声で脳内再生されるw かといってジェネリックプログラミングだと長いか。
96 名前:デフォルトの名無しさん mailto:sage [2015/11/01(日) 14:26:27.55 ID:85GIjHA4.net] 英語だとGenericsだからジェネリックスと言うべきだろうね 日本語だとジェネリックが多いけど
97 名前:デフォルトの名無しさん [2015/11/01(日) 17:47:18.14 ID:wW4dECTr.net] >>92 うむ
98 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 20:57:38.51 ID:hYok3Gvy.net] ゼネリック
99 名前:デフォルトの名無しさん [2015/11/19(木) 23:49:04.62 ID:xa/vi52N.net] Microsoftのコードエディタ「Visual Studio Code」β版でオープンソース化、拡張機能で「Go」など約60言語に対応 gigazine.net/news/20151119-microsoft-visual-studio-code/
100 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 11:13:18.44 ID:SnNAjHh0.net] >>96 ちゃんとTypeScriptで書かれてるのが確認出来たし コーディングスタイルとか色々参考になるな