TypeScript part2 [転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2015/04/30(木) 18:37:29.98ID:ynMflk1l
http://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.

前スレ
http://peace.2ch.net/test/read.cgi/tech/1349187527/
2015/05/01(金) 11:16:24.11ID:O5IrbREb
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.69ID:Cd44J9+J
>>2
MSとGoogle夢の共演
2015/05/01(金) 16:28:43.35ID:Cd44J9+J
Announcing TypeScript 1.5 Beta
http://blogs.msdn.com/b/typescript/archive/2015/04/30/announcing-typescript-1-5-beta.aspx

しかし、いきなり大量のコンパイルエラーが…
まだ更新しない方が良さそう
2015/05/03(日) 17:06:42.35ID:rBxa49N8
インストールしたら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);
}
}
}
2015/05/03(日) 17:38:50.79ID:RegehUyj
>>5
BをAより前に書く
2015/05/03(日) 18:27:42.73ID:H+7a6WF5
>>6
できました
ありがとうございます
2015/05/12(火) 21:39:01.53ID:bsrem9uN
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);
}
}
2015/05/13(水) 08:53:02.33ID:8FgeUemt
(2)をvar target = <Element>e.target;でいいんじゃないかな
DOMの仕様でtargetがElementではないケースがあるのかどうか知らないけど、少なくとも自分で扱う範囲なら問題ないでしょ
2015/05/13(水) 10:56:22.23ID:2k7sC9bw
>>8
classListだから
var target = <HTMLElement>e.target;
または
var target: HTMLElement = e.target;
じゃないかな?
分からない場合はlib.d.tsを見ればいいよ
2015/05/13(水) 17:58:04.11ID:EXojY7d0
最初の頃は律儀に型指定してたけど面倒くさいからもうやってない
コンパイル速度が上がるわけでもない。
2015/05/14(木) 11:17:19.81ID:gHUa6+Se
tsc --noImplicitAnyでかつ明示的にanyを使ってなくてエラーがでなければ
型安全が保たれてるから何も毎回型指定する必要はないよ

ただjquery.d.tsとかanyだらけなんで実行しないとエラーが出ない事とかよくある
単純にjQuery使う程度ならJavaScriptのままでいいとは思う
2015/06/04(木) 21:53:08.26ID:jTi6Q4y/
やっぱ堅い仕様で書いてるとtscでインライン化して欲しくなっちゃうなぁ
2015/06/05(金) 11:52:22.54ID:QvLzrgmO
>>13
インライン化し始めるとjsのソースがグチャグチャになりそうだ
get,setはあるんだからそれでいいんじゃないの?
2015/06/06(土) 09:46:32.31ID:be84NOOA
>>14
うちの場合JavaScriptはただの実行ファイル扱いだからね
デバッグはソースマップなりインライン化の無効なりできればいいんじゃないかな
2015/06/07(日) 13:32:40.51ID:yxti539q
1.5がなかなか正式リリースされないのはなんでぞ
2015/06/07(日) 20:32:21.84ID:4Wk1GroN
>>16
元々の予定にはなかったDecoratorを入れたからじゃないかな
仕様の検証の為に1.5AlphaやBetaを挟んだのだと思う
2015/06/09(火) 14:13:38.63ID:X0sByrSC
>>15
インライン化がもし速度の為だったら速くなるかどうかは未知数だな
JITコンパイラの高速化の癖というか挙動を予測するのはかなりむずい
あくまで主観だけど長くなった関数は高速に実行されにくくて
細かく関数に分けた方が速くなる気がする (実際にそういう事はあった)
関数単位でコンパイルするしないを決めてるっぽいし
2015/06/09(火) 22:54:39.34ID:wugeehUL
>>17
サンキュー
2015/06/10(水) 17:03:59.59ID:/7VhIJtD
解析によるインライン化はtscでもJITでも好きにしてくれていいけど
inlineキーワードで明示できた方が気持ち的にスッキリする
2015/06/18(木) 11:14:55.39ID:kEEgKM4/
ES6がいろんなブラウザで動かせるようになった頃にTypeScriptってどうなるの?
2015/06/18(木) 13:05:05.85ID:4ooRsfQ9
ECMAScript2015(旧ES6)がリリースされたんだな
>>21
TypeScriptの最大のメリットは静的型チェックだから有用性は全く変わらない
他にもprivate指定とかも有用だし既にES7(ES2016?)の仕様も先取りしようとしてるよ
2015/07/09(木) 12:12:04.05ID:6sfBPUUP
newさせないようにコンストラクターを非公開にしたい
現状でも実現できるけど、そのためにインターフェースを2つも書くのは面倒くさい
2015/07/15(水) 10:51:34.25ID:4m+kxR2f
http://blogs.msdn.com/b/typescript/archive/2015/07/13/the-typescript-team-is-hiring.aspx
TypeScript Teamの求人だってさ
25デフォルトの名無しさん
垢版 |
2015/07/21(火) 01:31:13.85ID:/gCXtG+X
Announcing TypeScript 1.5
http://blogs.msdn.com/b/typescript/archive/2015/07/20/announcing-typescript-1-5.aspx

VS2015と合わせてきたか
2015/07/21(火) 01:32:58.22ID:/gCXtG+X
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

次の仕込み進んでるね
2015/07/21(火) 02:33:09.52ID:rWNspVF5
昔はJScriptという亜種JavaScriptを作っていたMSが
今はJavaScriptの未来を作ってるんだから興味深いよ。

V8を作ってるGoogleが作ってるAngularJSが
TypeScriptを採用してるっていうんだからね。
世の中何が起こるかわからない。
2015/07/21(火) 10:29:14.64ID:JRZO1Ijb
ES6以降の見識とかモダン言語のたしなみがないと新機能を追いかけるのは難しくなってきてるな
29デフォルトの名無しさん
垢版 |
2015/09/03(木) 18:56:51.43ID:nwE/lfZd
Announcing TypeScript 1.6 Beta
http://blogs.msdn.com/b/typescript/archive/2015/09/02/announcing-typescript-1-6-beta-react-jsx-better-error-checking-and-more.aspx
2015/09/09(水) 13:41:12.43ID:/LabsqIc
node.js 4.0.0 がリリースされたけど tsc 1.5.3 でのコンパイルは問題なかったよ
31デフォルトの名無しさん
垢版 |
2015/09/17(木) 11:57:54.97ID:EJYiGj1J
TypeScript 1.6 来た!
http://blogs.msdn.com/b/typescript/archive/2015/09/16/announcing-typescript-1-6.aspx

classとか型関連の機能追加が多いかな
2015/09/17(木) 13:08:48.57ID:1pEQnj0M
日本語で更新内容を教えて
33デフォルトの名無しさん
垢版 |
2015/09/17(木) 13:39:47.54ID:EJYiGj1J
>>32
誰かがブログで解説するだろうからそれを待て

あと1.6でオブジェクトリテラルの型チェックが厳密になって大量のエラーが…
https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes
↑ここに対処法とか書いてあるからバージョンアップする場合は見るべし
2015/09/18(金) 00:34:58.40ID:RRhCs/3r
>>32
TypeScript 1.6.0-beta 変更点
http://qiita.com/vvakame/items/072fa78f9fe496edd1f0
TypeScriptがReactをサポート
http://www.infoq.com/jp/news/2015/09/typescript16-react

1.6betaの記事だけど、1.6正式版でも同じだよ
2015/09/29(火) 13:25:38.28ID:5DFpZmVK
typescriptって型を省略せずに書くのが王道なの?どうなのかおしえてください
2015/09/29(火) 13:57:38.01ID:k2h28xWP
>>35
var a = 1;
は型を省略して書いてるように見えるが型推論されてaはnumber型に固定される
その後a = "hoge";と書くとエラーになる
型推論をあてにして型を省略するのは普通だがそういう事を聞いてんの?
2015/09/29(火) 14:07:02.02ID:YDlHSLNo
partialはサポートしてないんですよね?
2015/09/29(火) 14:10:18.85ID:RAm+PgpZ
>>36
これからは型をかかないようにします
2015/10/01(木) 18:23:15.46ID:c/9pCOim
関数の引数の型は書いて下さいね
あと --noImplicitAny は忘れずに
2015/10/01(木) 18:44:40.47ID:JwHQ7pBT
--noImplicitAny を付けてれば引き数の型を書かないとエラーになるけど
戻り値の型は省略できてしまう
コンパイラは型推論で戻り値の型は分かるから補完候補の表示で型は分かるけど
戻り値の型もちゃんと書いた方がいいね
そうすると整数を返す予定だったところを文字列返しちゃった時にエラーになる
2015/10/02(金) 02:53:49.54ID:HtrqvoEB
>>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
2015/10/02(金) 12:29:38.37ID:O/xnKl5a
>>41
そういうのはinterfaceとかmodule(namespace)を使えば実用上困ることは
無いと思うからいらないでしょ
2015/10/03(土) 10:49:02.03ID:HkSezUmR
コードの中にnew Promiseを書くと
tsc test.tsでチェックしたら
error TS2304: Cannot find name 'Promise'
って出るんですがこれはどうしたらでなく出来ますか?
2015/10/03(土) 11:10:26.45ID:x61qrQJS
>>43
tsc --target ES6 にするかそれが無理なら
https://github.com/borisyankov/DefinitelyTyped/tree/master/es6-promise
からes6-promise.d.tsを落としてくる
2015/10/03(土) 11:39:52.85ID:HkSezUmR
--target ES6を指定します
どうもありがとうございます
2015/10/03(土) 18:36:19.11ID:OMUtivN5
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'
ってなるんですがよく分かりませんどうかけばいいんでしょうか
2015/10/03(土) 23:27:40.80ID:x61qrQJS
>>46
エラーメッセージが理解出来れば分かる事ではあるが…
var i; ← iの型がany
for (var i = 0; ← iの型がnumberだから矛盾してると言ってる
var i;を消すかvar i: number;とすればいいよ
2015/10/04(日) 13:23:21.78ID:DvM48NAd
超超初心者なんですが
仮にグローバルで宣言したiがforでなく別の関数で使われることを意図していた場合
>>46のように変数iをfor文でたまたま同じ名前の制御変数としてvar宣言すると思うのですが
このときvarが付いているにも関わらずfor文のiは一行目で宣言したiとみなされてしまうってことですか?
2015/10/04(日) 13:37:43.55ID:khdgfcjT
>>48
JavaScriptのvarはブロックスコープの機能が無い (詳細はググるなりしてくれ)
直感的にしたければES6のletを使うしかない
2015/10/04(日) 13:41:16.06ID:bHkc51Yk
TSはES5ターゲットでもlet/const使えるからへーきへーき
2015/10/04(日) 13:42:29.90ID:khdgfcjT
>>48
いや間違えた…TypeScriptは普通にletが使えるからletを使えばいい
>>46のvarをletに書き換えるだけでうまく行くよ
2015/10/04(日) 13:44:14.49ID:khdgfcjT
かぶった…まぁそういう事だ
2015/10/04(日) 13:49:24.42ID:DvM48NAd
>>49
ああ!ifやforは関数ではないからvarつけても同名のグローバルを見に行っちゃうんですね!
そこで出てくるのがlet/constか!なっとく!
54デフォルトの名無しさん
垢版 |
2015/10/05(月) 00:57:09.65ID:908hRhwN
>>53
let使える前のjsの変数スコープは基本的に関数レベルだったんだよ。
rubyやpythonとかもそうだったりする。
2015/10/15(木) 21:21:16.18ID:8y87T4ny
1.7のissue残り3つ
そろそろ来るか
2015/10/16(金) 09:45:15.72ID:cndR1OOY
issueが0になってからリリースまで1ヶ月以上掛かるし
1.6がリリースされた時は1.6.2だったからもう少し先な気がする
2015/10/17(土) 16:42:41.11ID:/J6P+2iK
ポリモthisが待ち遠しい
2015/10/23(金) 19:57:18.48ID:uz+nJ7WP
>>57
ポリモthisって変数の受け取り側で(ダウン)キャストしないで済むって事でしょ?
そんな待ち遠しいって何か便利な使い方とかあるの?
2015/10/23(金) 23:22:47.24ID:vOh1PKiJ
interface IEquatable {
equals(other: this): boolean
}
とかかな
2015/10/23(金) 23:33:29.49ID:oFKlQBDH
typescriptで使いやすいEditorでおすすめってなんですかね?
MS由来からいってVSなんでしょうけど、当方Macなので、、、、
2015/10/24(土) 11:24:42.03ID:lLID1QIl
>>60
ttps://github.com/Microsoft/TypeScript/wiki/TypeScript-Editor-Support
普段何使ってるんだよ
Vimは導入が難しいが、何するにしても特化した環境が作れるぞ
2015/10/24(土) 14:26:29.93ID:otxAXsrh
>>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って自分の型名のエイリアス
として使えるから便利って事であってるの?
2015/10/24(土) 14:31:41.39ID:otxAXsrh
>>60
Emacsと
https://github.com/ananthakumaran/tide
↑を使う事でVSに劣らないインテリセンス環境が出来上がるぞ(ページ内のscreencastを見るべし!)
ちなみに常用してるけどMac版Emacsは使った事ないから詳細は分からん
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況