TypeScript part1
■ このスレッドは過去ログ倉庫に格納されています
0001 ◆9Zst2CqO/Y
2012/10/02(火) 23:18:47.60TypeScript is a language for application-scale JavaScript development.
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
Any browser. Any host. Any OS. Open Source.
0048デフォルトの名無しさん
2012/10/04(木) 01:24:47.19Javaも似たような状態だな。
0049デフォルトの名無しさん
2012/10/04(木) 02:28:29.51dartやgwtより、こっちの方が魅力的。jsのスーパーセットになってる。
0050デフォルトの名無しさん
2012/10/04(木) 02:45:03.69そもそも使ってから褒めろよと
0051デフォルトの名無しさん
2012/10/04(木) 03:30:45.23dartなんて試そうなんて気すらおこらなかったよ
0052デフォルトの名無しさん
2012/10/04(木) 03:36:16.27だからjsのスーパーセットとか言われたら不安しかない
0053デフォルトの名無しさん
2012/10/04(木) 03:42:04.810054デフォルトの名無しさん
2012/10/04(木) 03:44:43.62sample の node の機能を利用した例をみれば
haxeよりは 元の js のコードに近くはなる綺麗だけど
.d.ts ファイル必須。
http://www.typescriptlang.org/Playground/
playground だと
Unable to load reference
"$model1"
でエラーになるけどコンパイルには成功してるのかな?
コード生成されてる
コンソールからだとTypeError: Object #<Object> has no method 'existsSync'
でコンパイルできない。
https://github.com/madrobby/vapor.js/pull/60
各種ライブラリの port 待ち。さすがvapor.js
0055デフォルトの名無しさん
2012/10/04(木) 05:40:16.87typescriptこそJava並なみのヘビー言語だから心配すんな
0056デフォルトの名無しさん
2012/10/04(木) 06:28:30.700057デフォルトの名無しさん
2012/10/04(木) 06:59:38.960058デフォルトの名無しさん
2012/10/04(木) 09:57:42.40いちいちコンパイルしないと使えないしLLじゃねーよ。糞言語
0059デフォルトの名無しさん
2012/10/04(木) 10:09:56.42javascriptだと souce map というのがそれに当たるかな
直接ES3.1, ES4, ES5, ES6 向きの
生成コードを出力するというコンセプトはないと思う。まずは souce map に落としてそこで吸収する流れかと。
https://github.com/ryanseddon/source-map/wiki/Source-maps:-languages,-tools-and-other-info
source map generatorの使い方
http://d.hatena.ne.jp/gfx/20120408/1333892223
コンパイラの機能をリフレクションで利用したい
とか .net の ironpython やら ironruby で一時可能だったけど(windows環境以外で
さいきんはこんなかんじが流行なんかな
車輪の再発明という気も多少するが
Does TypeScript provide an explicit Public API for NodeJS Module Access?
http://stackoverflow.com/questions/12717309/does-typescript-provide-an-explicit-public-api-for-nodejs-module-access
http://gkz.github.com/LiveScript/
Livescript は coffeeの改良系の実装らしい…コンパイラ技法屋さん楽しそうやw
0060デフォルトの名無しさん
2012/10/04(木) 10:31:17.48これを用いてJavascriptが勝利すると言う事だよ
馬鹿か?お前
0061デフォルトの名無しさん
2012/10/04(木) 10:52:40.340062デフォルトの名無しさん
2012/10/04(木) 13:40:18.040063デフォルトの名無しさん
2012/10/04(木) 13:58:41.35最新のブラウザにはJITコンパイラが入ってるから、単体のコンパイラなんか、もういらないと思う。
0064デフォルトの名無しさん
2012/10/04(木) 14:37:22.53http://blog.markrendle.net/2012/10/02/the-obligatory-typescript-reaction-post/
zeh says:
October 2, 2012 at 1:18 pm
Re: classes ? one of the problems is that ES6 doesn’t seem to have a single
‘class’ standard. I haven’t gone that deep into the proposal, but TypeScript
seems to use the “Minimal classes” proposal
(http://wiki.ecmascript.org/doku.php?id=strawman:minimal_classes) not the main class one.
How final is Harmony’s proposal? It seems to be difficult to find information
on that. I hope Microsoft is not creating a new JScript.
Reply
zeh says:
October 2, 2012 at 1:20 pm
Actually, on second thought, TypeScript seems to use the “Maximally Minimal”
proposal instead
(http://wiki.ecmascript.org/doku.php?id=strawman:maximally_minimal_classes).
Ariya Hidayat ?@ariyahidayat
Need class and module? Use #Harmony and compile it
(same trick like in #TypeScript), see
http://ariya.ofilabs.com/2012/06/esprima-and-harmony-module.html and
http://ariya.ofilabs.com/2012/09/javascripts-future-class-syntax.html
コンパイラの前にまずはES6言語仕様の策定作業。
まだクラスの定義も定まってない。あくまでproposalの段階なのだ
0065デフォルトの名無しさん
2012/10/04(木) 14:47:31.270066デフォルトの名無しさん
2012/10/04(木) 16:06:03.64こいつら何の話してんだ?
0067デフォルトの名無しさん
2012/10/04(木) 19:22:51.640068デフォルトの名無しさん
2012/10/04(木) 19:23:29.40四方八方からタコ殴りにされているという認識
0069デフォルトの名無しさん
2012/10/04(木) 19:25:56.71短所:JavaScriptがそのまま通る
0070デフォルトの名無しさん
2012/10/04(木) 21:43:16.74http://ecma-international.org/ecma-262/5.1/
C++/CLI 言語仕様書 西暦2005年12月 初版
http://vene.wankuma.com/ecma372/19_1_5_class_member.aspx#SS.19.1
typescript はプリプロセッサに近いものだから C というか C++に近い立ち居地。
ただこの web版 の C++ は現時点ではどれが正解とも云い難い。
https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS
結局デファクトとったとこ&さまざまな試みによる知見に元づく合意
その記法が標準になる
0071デフォルトの名無しさん
2012/10/04(木) 21:56:54.68それに準拠したやり方が最良なんだろうな。
0072デフォルトの名無しさん
2012/10/04(木) 22:45:48.78JSで問題無いと思ってる
0073デフォルトの名無しさん
2012/10/04(木) 23:18:41.73結局のところ、言語の良し悪しは
大した問題ではない。
0074デフォルトの名無しさん
2012/10/04(木) 23:25:12.100075デフォルトの名無しさん
2012/10/05(金) 00:00:20.720076デフォルトの名無しさん
2012/10/05(金) 00:50:23.87>>73が使った言語:�lisp,�c++,�c,�haskel,�c#
0077デフォルトの名無しさん
2012/10/05(金) 01:28:13.010078デフォルトの名無しさん
2012/10/05(金) 01:36:09.640079デフォルトの名無しさん
2012/10/05(金) 03:33:53.11scheme 系とか組み込みで地味に利用されてる
でもエンジンのAPIが組み込めるように公開されてる訳ではないので
IE9以降がメインターゲットなんだろうかな
Qtscipt は ES3.1
http://qt-project.org/forums/viewthread/5381
ECMA-262 (5th|Harmony|next) で宣言された プロトタイプ の拡張はアリ?ナシ?
http://qiita.com/items/3a70b5a62b6c87379c77
JScript でサポートされる機能
http://msdn.microsoft.com/ja-jp/library/49zhkzs5(v=vs.80).aspx
How to call the compiler from .NET?
http://typescript.codeplex.com/discussions/397810
結局 MS Script Control でやれとなる。(当然エンジンはES3.1相当のJSctiptの構文のみが使える
エンジンは非公開だからなぁ…ブラウザ対応次第かと(特にモバイル
0080デフォルトの名無しさん
2012/10/05(金) 04:16:11.04アセンブリャーからObjective-Cまでいろんな言語で幅広く仕事をしたが
言語の良し悪しは大した問題ではない(APIや周辺コミュニティのほうが重要)という通念を覆すほど
JavaScriptはクソ
以前からずっとバッドノウハウを量産して喜んでた界隈の連中を横目で眺めつつ
おかしいと思ってたんだよ。
0081デフォルトの名無しさん
2012/10/05(金) 04:27:02.48HTML5HTML5うるせーから仕方なく1ヶ月程度でキャッチアップしてみたら
お前らこんなどうしようもない言語と環境で仕事してたの、としか言いようがなくて
要はろくに大規模開発したことのない、レベルの低いJavaScripterどもが
駄サイクルを作ってたんだなという認識ですね。
0082デフォルトの名無しさん
2012/10/05(金) 04:32:08.45CoffeeScript、Dart、JSX、Haxe、TypeScript、その他無数の変換言語↓
https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS
これら全部現行のJavaScriptを否定しに来てるというのがまだ理解できないようでは終わっとる
JSが基幹言語?その逆で、ただの土管扱いされてるんだよ。
使いもんにならん言われてるんだよ。わざわざ新言語を量産してまで。
今回、あのHejlsbergにまでノーと言われたんだよ。
0083デフォルトの名無しさん
2012/10/05(金) 06:54:50.23それでよかったんだよ、IDEも豪華に対応できたんだよ
言語開発者はみんな余計な物付けすぎ
0084デフォルトの名無しさん
2012/10/05(金) 08:23:06.55典型的な一ヶ月程度勉強しただけの
やつの感想ですねw
0085デフォルトの名無しさん
2012/10/05(金) 08:59:31.24function f(x, y) {
return x + y;
}
alert(f(1, "23")); # 123
なお、Typescriptで型を付けても通る(暗黙の型変換)
function f(x: number, y: string) {
return x + y;
}
alert(f(1, "23"));
0086デフォルトの名無しさん
2012/10/05(金) 09:23:17.340087デフォルトの名無しさん
2012/10/05(金) 09:35:19.35http://kangax.github.com/es5-compat-table/
javascript 1.8.5とかガンガン攻める姿勢は買ったげる
でも ie8 軒並みアウトなんや
0088デフォルトの名無しさん
2012/10/05(金) 09:42:02.140089デフォルトの名無しさん
2012/10/06(土) 00:03:37.41C#もJavaも糞言語じゃん
0090デフォルトの名無しさん
2012/10/06(土) 00:18:37.03じゃあお前の好きなクソ言語の名前言ってみな。
それがクソかどうか判断してやるからさw
0091デフォルトの名無しさん
2012/10/06(土) 01:06:52.730092デフォルトの名無しさん
2012/10/06(土) 02:22:41.18ドカタ言語をあえて選ばないだけだ。
0093デフォルトの名無しさん
2012/10/06(土) 06:11:05.60それにまだ未完成品だし
0094デフォルトの名無しさん
2012/10/06(土) 10:59:35.49実行環境の多さ、ライブラリの多さ、ノウハウの多さ、
書籍の多さ、提供会社の多さ、使用ユーザーの多さ、などなど。
それがわからない奴は、どうして良い言語が普及しないんだ!と
悩むことになる。
0095デフォルトの名無しさん
2012/10/06(土) 11:07:30.37ただデファクトスタンダードを取ったというだけ
これは市場が選んだわけではない。勝手に決められて嫌々ながらも従わざるを得なくなった
従いたくない人たちが魔改造を繰り返してる
0096デフォルトの名無しさん
2012/10/06(土) 11:25:54.39Perlでクラスを作るにはいろんな方法があります。
これがバッドノウハウです。みたいな話?w
0097デフォルトの名無しさん
2012/10/06(土) 13:28:03.37lambda式内で this 参照はできないんかな…
0098デフォルトの名無しさん
2012/10/06(土) 13:41:26.38言語が普及するか否かは、言語の良し悪しでは決まらない
普及する = 最底辺の馬鹿でも使える、が大前提だからね
0099デフォルトの名無しさん
2012/10/06(土) 14:03:38.71言語を馬鹿にしているのか、
それを使ってる人を馬鹿にしているのか。
はっきりさせていい?
お前が馬鹿にしているのは、使ってる人であって言語じゃないよね。
普及した優れた言語。
それは馬鹿でも使えるが当然天才でも使えるんだよ。
お前が馬鹿にしているのは、天才が使っている優れた言語、ではない、
単に馬鹿でも使えることが、悔しいんだ。
なぜだろうねw
0100デフォルトの名無しさん
2012/10/06(土) 14:28:40.06まさかWeb2.0だAjaxだHTML5とかいうバズワードでノセられた奴が強弁してないよね。
0101デフォルトの名無しさん
2012/10/06(土) 14:29:38.54お前がJavaScriptとライブラリをごっちゃにしてるってことはよくわかったよ。
馬鹿が言った言葉は、やっぱり馬鹿だってわかるなw
0102デフォルトの名無しさん
2012/10/06(土) 15:18:00.940103デフォルトの名無しさん
2012/10/06(土) 17:55:07.32仕事にありつけそうな言語使えば良いよ
0104デフォルトの名無しさん
2012/10/06(土) 18:03:58.51ロードレーサーにママチャリ乗れっていう馬鹿はいない
0105デフォルトの名無しさん
2012/10/06(土) 18:07:43.570106デフォルトの名無しさん
2012/10/06(土) 18:15:57.460107デフォルトの名無しさん
2012/10/06(土) 18:29:01.76改造しても所詮原付は原付
0108デフォルトの名無しさん
2012/10/06(土) 20:41:39.23実装が増える毎にVMの中のヒトたちが対応しきれない悪寒
0109デフォルトの名無しさん
2012/10/06(土) 20:49:42.85対応しきれないのはお前だけ。
0110デフォルトの名無しさん
2012/10/06(土) 20:50:16.95>>103
0111デフォルトの名無しさん
2012/10/06(土) 21:01:43.24型付けても通るとかダメダメじゃん
0112デフォルトの名無しさん
2012/10/06(土) 21:21:09.300113デフォルトの名無しさん
2012/10/06(土) 21:30:01.28コーディング時に明確に予測できるはずだから何の問題もないだろ
その程度の言語仕様も知らずに使える言語が欲しいってことか?
0114デフォルトの名無しさん
2012/10/06(土) 21:40:08.37なんで通らないと思ったの?
0115デフォルトの名無しさん
2012/10/06(土) 21:41:49.61え?
0116デフォルトの名無しさん
2012/10/06(土) 21:45:19.13yの内容によって文字列連結になったり数値加算になったりするなら問題だが
そうでなくて挙動が完全に予測できるんなら全く問題ない
0117デフォルトの名無しさん
2012/10/06(土) 21:46:17.70動的言語とか全く関係ないんだが
0118デフォルトの名無しさん
2012/10/06(土) 21:49:23.06文字列に変換してから連結する仕様になっている言語はかなり多いからごく自然なことだが
暗黙の変換だろうが言語仕様知ってりゃ予測できるだろ
0119デフォルトの名無しさん
2012/10/06(土) 21:55:11.18文字列.add(文字列)
文字列.add(数値)
addメソッドがオーバーロードされてるのと同じ事だろう。
型の問題っていうのは、互換性がない型、オーバーロードも定義さていないもの、
無関係のものを代入したら動かないのに、それが実行されるまで
わからないってのが問題なのに。
0120デフォルトの名無しさん
2012/10/06(土) 21:58:45.780121デフォルトの名無しさん
2012/10/06(土) 22:00:55.75むしろ動いちゃうのが問題
>>85で引数に型指定しない場合だと、x, yの内容によって+の挙動が全く異なってしまう
さすがに+使うときは、文字列連結か数値加算かどちらか一方しか期待してないだろうから、
予期しない動作によるバグの原因になる。
型を指定するなら何の問題もない。
0122デフォルトの名無しさん
2012/10/06(土) 22:26:37.51上で遊んでみたんだけど、まだ型推論は全然だね
こんなコードが通るし
function foo() : number { return 1; }
function bar() : string { return "23"; }
function baz(f, g) { return f() + g(); }
function hoge() : number { return baz(foo, bar); }
でもMSはF#を作れるところだし、今後に期待ってところか
0123デフォルトの名無しさん
2012/10/06(土) 22:37:34.93private var func(){...}
で型推論してくれよって話じゃないか。
0124デフォルトの名無しさん
2012/10/06(土) 22:47:46.52型推論はAIじゃねぇよ。
どちらでも取れる問題の
正解を出せなんて不可能な話。
0125デフォルトの名無しさん
2012/10/06(土) 23:10:28.55hoge()の戻り値はstring以外ありえんだろ
0126デフォルトの名無しさん
2012/10/06(土) 23:12:02.77どこかでオーバーライドするかもしれんだろ。
windows.hoge = function () {return 123}
0127デフォルトの名無しさん
2012/10/06(土) 23:14:24.55>>122でstring返す関数にnumberって型書いてエラーにならないのと
何の関係があるのそれ
0128デフォルトの名無しさん
2012/10/06(土) 23:16:05.29それは無いものと考えないと静的解析の意味無い
ジェネリックには対応する予定らしいからもうちょっと型推論も強力にはなるんじゃないの
0129デフォルトの名無しさん
2012/10/06(土) 23:21:13.60function f() : number { return 1 + "2"; }
function g() : number { return ((x,y) => x + y)(1, "2"); }
0130デフォルトの名無しさん
2012/10/06(土) 23:25:25.050131デフォルトの名無しさん
2012/10/06(土) 23:26:58.75型を全然書かないより邪悪ですから
0132デフォルトの名無しさん
2012/10/06(土) 23:32:40.25数値の加算が文字列連結になったらびっくりするだろ
でも>>129のgの戻り値を使ったら、そういうことが起こる
0133デフォルトの名無しさん
2012/10/07(日) 00:07:25.88お前、数値オブジェクトと演算子オーバーロードって
発想が頭にないんじゃないのか?
A + B というのは演算子 = メソッド と考えると
A.+(B) という形に置き換えられる。
お前が理解しやすい形にするとA.add(B)
つまりはこういうことだよ。
String ret = num.add(str);
0134デフォルトの名無しさん
2012/10/07(日) 00:08:54.88取りうる引数に、数値オブジェクト以外に
文字列オブジェクトに対応している。
0135デフォルトの名無しさん
2012/10/07(日) 00:11:41.680136デフォルトの名無しさん
2012/10/07(日) 00:16:00.15で?それが
function f(x : number, y : number) { return x + y; }
においてfが文字列連結を実行しても良い理由になるの?
0137デフォルトの名無しさん
2012/10/07(日) 00:18:33.48両方が数値の場合は、数値計算ですよ?
片方が文字列の場合は、文字列結合バージョンの加算が呼ばれます。
0138デフォルトの名無しさん
2012/10/07(日) 00:20:10.83>>136のfの引数に>>129のgの戻り値を入れてみ?
0139デフォルトの名無しさん
2012/10/07(日) 00:21:52.90Local "_this" silently conflicts in arrow function
http://typescript.codeplex.com/workitem/11
いちおう Issue Tracker に挙がってるけど
Capturing instance methods breaks 'this'
http://typescript.codeplex.com/workitem/127
this 周りは仕様に注意を要する部分ではあるとは思う
0140デフォルトの名無しさん
2012/10/07(日) 00:21:57.680141デフォルトの名無しさん
2012/10/07(日) 00:22:09.72動いちゃうのは問題だが
0142デフォルトの名無しさん
2012/10/07(日) 00:24:17.11あほか。すぐバレる嘘付くなよ
g()は文字列"12"なんだからfに入れたら文字列加算になるよ
gの型注釈がnumberだから型エラーにはならないけど
0143デフォルトの名無しさん
2012/10/07(日) 00:26:02.74バージョン古いんじゃないですか?w
0144デフォルトの名無しさん
2012/10/07(日) 00:26:12.93型推論をいくら完璧にしようが>>141みたいなのはどうしようもないし
0145デフォルトの名無しさん
2012/10/07(日) 00:26:46.89バージョンwwwお前ばかすぎ
0146デフォルトの名無しさん
2012/10/07(日) 00:31:14.49明示的なキャストは自己責任だと思うけど、実行時の型チェックは欲しいね
0147デフォルトの名無しさん
2012/10/07(日) 00:32:20.49そのうち、strictモードみたいなのでて
レガシーコードと呼ばれるようになるさ。
■ このスレッドは過去ログ倉庫に格納されています