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/
152 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 23:57:52.58 ID:0c+BTX7l.net] 日本一みたいな小粒の尖ったソフト出すメーカーはこういうのでコストかけずにどんどん出していったほうがいいんだろうな
153 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 02:26:54.28 ID:87NUqkxQ.net] TypeScript1.8以降で追加予定または協議中の注目の新機能12つ falsandtru.hatenablog.com/entry/typescript-2016
154 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 10:26:24.39 ID:qQE0KVCc.net] noImplicitReturns最高
155 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 13:17:18.21 ID:zNppH846.net] 1.7でも戻り値の型が違うとエラーになるけどnoImplicitReturnsの説明見ると 結構すり抜けるパターンがあったんだな… 全部undefined関連だけど最初からエラーにしとけよ
156 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 13:34:53.88 ID:zNppH846.net] あとreadonlyはなぜ function hoge(readonly a: number) { } と書けないんだよ… メンバーより引き数に指定出来る事の方がはるかに重要だ 他は劇的に便利になるようなものはないな
157 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 14:43:14.41 ID:ISLz7uba.net] うんこの上に金粉まぶしてもうんこはうんこ
158 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 15:03:46.23 ID:9XEpf0Yk.net] >>151 numberにreadonlyを指定することは意味がないと思うが… 引数がreadonlyであることを表明したいなら そういうinterfaceを定義すれば済む。現行機能で十分じゃないか? 指定子で表明するのはC++がconstで失敗した道だからなぁ
159 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 17:02:40.14 ID:zNppH846.net] >>153 あー無意味なこと書いてしまった…numberじゃなくて何らかのクラス名だった ちなみに function test(readonly v: Data/*参照しかしない事を表明*/): boolean { } をしたいだけなのに function test(v: {readonly x: number, ...全部書くのか?): boolean { } とすればいいという事か?
160 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 17:36:17.11 ID:9XEpf0Yk.net] >>154 「特定のメンバーしか見ない」と表明したいならそうなるんだろうね もしくは最初からインタフェースを分けておくか interface ReadOnlyData { get; } interface Data extends ReadOnlyData { set; } 単純なフィールドの読み書きだけならいいけど getXXX() は readonly だよねとか getXXX() の中でキャッシュ値が変化するけど実質的には readonly だよねとか やりだすと、C++の悪夢がよみがえってしまう
161 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 18:43:03.80 ID:zNppH846.net] >>155 そりゃ悪夢だろ なんでクラス定義する側がそんな苦労しないといけないんだ ちなみに class Hoge { int getXXX() const; mutable Cache cache;って知ってるか? こうしておけば何か気にする事なんてあるか?
162 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 18:47:18.76 ID:zNppH846.net] 補足 class Hoge { int getXXX() const; ← これはcacheの中身は書き換える mutable Cache cache; ← これが書き換わってもconst性に影響無いと考える
163 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 23:14:17.73 ID:b7pvx0AF.net] >>153 何が失敗だったの? C++でconst無かったら怖くてかなわん…
164 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 23:40:33.36 ID:DXbDvcZw.net] >>151 利用する側に重要な情報だよな。
165 名前:デフォルトの名無しさん mailto:sage [2015/12/26(土) 00:31:22.25 ID:iwceh6a5.net] C++でconstに問題あるなんて素人のたわごとだろ 聞いたこと無い
166 名前:デフォルトの名無しさん mailto:sage [2015/12/26(土) 00:39:17.52 ID:iwceh6a5.net] C++で仕事を15年以上して凄い奴とかどうしようもない奴とか色々見てきたけど constに問題があるとか初めて聞いたよ
167 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 02:41:33.95 ID:cehhvXHA.net] VSCodeがいつの間にアップデートしてて>>124 の問題が早速修正されてるな オプソにした事でユーザーが増えて沢山突っこまれたに違いない もはやTypeScript最強エディタと言わざるを得ない
168 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 02:55:10.34 ID:cehhvXHA.net] 最近やっとNode.jsとブラウザの両方で使えるコードの書き方が分かったよ TypeScriptオンリーだったらtsc --module amdとrequire.jsがあればいいし JavaScriptを使う場合はwebpack使えば出来た 俺はTypeScriptの時でもリリース時にwebpack使って開発中はrequire.jsで 個別にファイルを読み込んだほうがデバッグしやすいからそうしてる ちなみに///<reference path='hoge.ts'/>とかmoduleやnamespaceは全く使わない それが今のトレンド (VSCodeのソースがそうしてる)
169 名前:デフォルトの名無しさん [2015/12/29(火) 16:10:58.92 ID:O/+FVQhq.net] そりゃそうだ
170 名前:デフォルトの名無しさん [2016/01/03(日) 18:07:55.32 ID:CSCP9BIo.net] だれかわかるやつ教えてくれ... 親クラスのstaticメソッドを子クラスでoverrideすると、 実行していない状態でもなぜか親クラスのstaticメソッドが実行されてしまうんだが、これはなぜなんだ... 一応ソースだけ張ってみる。 /// <reference path=
171 名前:デフォルトの名無しさん [2016/01/03(日) 18:14:12.59 ID:CSCP9BIo.net] すまんこれ s1.gazo.cc/up/169919.png
172 名前:デフォルトの名無しさん mailto:sage [2016/01/03(日) 23:49:46.81 ID:4W+1xUXu.net] >>165 ecmascriptの方の話? https://github.com/google/traceur-compiler/blob/master/src/runtime/classes.js
173 名前:デフォルトの名無しさん [2016/01/04(月) 00:03:32.03 ID:tFJ0VkMO.net] >>167 おお、ありがたい。 明日ちょっと見てみるわ。 どうもextendsするときに実行しちゃっているみたいだから、そういう仕様なの?とも思ったんだがいまいちわからんくて... コンパイル結果のjsも明日張ってみるわ 今日はもう寝る
174 名前:デフォルトの名無しさん mailto:sage [2016/01/04(月) 09:26:22.97 ID:B4Y3MO4F.net] >>168 console.log(Asian.name); console.log(Asian.name = "New type"); console.log(Asian.name); nodeだとname propertyは再定義できないと言われるが
175 名前:デフォルトの名無しさん mailto:sage [2016/01/04(月) 12:16:27.68 ID:WW+fICsN.net] >>166 これはおもろいw --target ES5のクラス継承は__extendsでいわゆるクラスを模したイディオムを 実行する訳だけど、その時にHuman.nameを読み出してるからその中で console.log()みたいな副作用のあるコードを書いてるとちょろっとお漏らし しちゃうんだな ま、getに副作用のあるコードを書くなって事だな 副作用が無ければ気にする事はない
176 名前:デフォルトの名無しさん [2016/01/04(月) 21:24:41.15 ID:tFJ0VkMO.net] これが生成されたJS 改行多すぎで書き込めないから二つに区切る。 var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } d.prototype = b === null ? Object
177 名前:.create(b) : (__.prototype = b.prototype, new __()); }; var Human = (function () { function Human() { } Object.defineProperty(Human, "name", { get: function () { console.log("Human class name"); return "homo"; }, enumerable: true, configurable: true }); return Human; })(); [] [ここ壊れてます]
178 名前:デフォルトの名無しさん [2016/01/04(月) 21:25:29.78 ID:tFJ0VkMO.net] var Asian = (function (_super) { __extends(Asian, _super); function Asian() { _super.call(this); } Object.defineProperty(Asian, "name", { get: function () { console.log("Asian class name"); return "ass"; }, enumerable: true, configurable: true }); return Asian; })(Human); console.log(Asian.name); 2行目でpが"name"のときに、d[p] = b[p]としてる部分で起きてるっぽい? get の functionを代入しているような気がするんだけどダメなんだなぁ
179 名前:デフォルトの名無しさん [2016/01/04(月) 21:27:50.70 ID:tFJ0VkMO.net] >>170 なるほど、やっぱり一応「仕様」なのね。 visible-true.blogspot.jp/2013/01/typescript-bridge-pattern.html ここを参考に抽象クラス書いてみようとしたら毎回エラーになったのがきっかけで気づいたんだ。 普段は副作用のないコードを書くようにしてるから問題ないけど、気持ち悪いな...
180 名前:デフォルトの名無しさん mailto:sage [2016/01/04(月) 21:29:44.16 ID:jSUxRRs2.net] console.log(Asian.name); をもう一度実行
181 名前:デフォルトの名無しさん [2016/01/04(月) 21:58:10.67 ID:tFJ0VkMO.net] >>174 最後のconsole.log(Asian.name); をふたつにするってこと? ↓こうなるだけだけど...そうじゃなくて? Human class name Asian class name ass Asian class name ass
182 名前:デフォルトの名無しさん [2016/01/04(月) 22:06:12.44 ID:tFJ0VkMO.net] >>172 うぉお自己レスだがいまさら理解 definePropertyにアクセスするとgetのfunctionが実行されるから、 extendsのときの代入で実行が走ってるのね 超すっきりしたわ なるほどね
183 名前:デフォルトの名無しさん [2016/01/04(月) 22:18:27.58 ID:tFJ0VkMO.net] いやまてこれダメじゃねーか getterちゃんと継承できてねーぞ ...できてねーよな?
184 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 00:16:07.40 ID:JRpiyNmr.net] 上書きしなきゃ親のが呼び出されるでしょ
185 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 04:38:20.48 ID:uTMnp3Vg.net] https://github.com/Microsoft/TypeScript/issues/1520 存在しないユースケースだから修正しない。 使いたければ__extends関数を自作してオーバーライドしろとさ。
186 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 13:11:51.67 ID:FYDa5kHc.net] >>178 継承されてないな まず最初に言っておくけどAsian内のgetを消すとAsian.nameは Function.nameにアクセスする事になってAsianと表示されるからfuncとかにしておく そうするとhomoとだけ表示されてHuman class nameは表示されないから継承されてない ちなみに--target ES6の場合はconsole.log('Human class name');が実行されて なおかつ継承もされない 要するに現状でES6と同じ挙動という事になるから自前の__extendsを作ると 将来ES6でコンパイルした時に困る事になる (継承をカスタマイズ出来ないし) 現状で問題の無いコードを書くしかないというのが結論だな
187 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 13:24:39.62 ID:FYDa5kHc.net] ES6のclassは__extendsでやっている事のシンタックスシュガーだってのが 分かるおもしろい例だった 結局ES6になってもプロトタイプベースのオブジェクト指向っていうところは 変わってないんだよね
188 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 08:53:19.05 ID:Fwd934PG.net] >>179 神だ、やっと神と、、、! ありがとう! ユースケースがないってのはちょっとひっかかるけどな。 キーワードstaticってクラスに属してるだけでstatic getが副作用を起こさない、他の影響をうけないって保証されてるわけじゃないし。 そう書けってことではあるんだけどね。
189 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 13:03:11.26 ID:ELUPuNqk.net] MSYS上のvimからtsuquyomi使えんかった 多分Nodeがマウントされたパスとか/c/から始まるパスを理解できないんだろうな MSYS版Nodeがあればなぁ
190 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 1
] [ここ壊れてます]
191 名前:7:46:53.97 ID:ELUPuNqk.net mailto: よく見たらmingw側にNodeがあったので試してみたけどバージョンが古いせいか駄目だったぜ TypeScript書くときは大人しくGVimにしておくか [] [ここ壊れてます]
192 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 13:05:16.12 ID:yW17RJ8f.net] ChakraCoreを使ったNode.jsが動いたらしい しかし最近のMSはプロジェクト名にCoreを付けまくってるな
193 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 10:08:20.25 ID:ym0h+5An.net] --module commonjsの状態でmoduleとnamespaceを使わずに export function ... export var ... って書いたソースがcommonjsのモジュールとしてコンパイルできるのに 外部からimportしようとするとモジュールが見つからないって怒られて困った --module amdだと大丈夫みたいなんだけど、バグだったりするの?
194 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 12:35:34.21 ID:xXuhphCo.net] 公式のwiki読め
195 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 17:32:00.25 ID:ym0h+5An.net] import時のパスが./で始まるかどうかの違いでした import * as test from "test"; // amdはOK, commonjsはエラー import * as test from "./test"; // amd, commonjs 共にOK test.tsを./node_modulesに突っ込んで--moduleResolution nodeなら前者もOK
196 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 10:30:33.12 ID:jiNDRvMm.net] 必読https://github.com/Microsoft/TypeScript/wiki/FAQ
197 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 13:40:35.40 ID:ipEE3CyC.net] TypeScriptのモジュールの扱いが激烈に難解になったからみんなハマルだろうな 俺は大体理解できたけど
198 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 13:50:19.91 ID:FKcC8XYP.net] 苦笑
199 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 14:01:32.82 ID:ipEE3CyC.net] >>191 そんなおかしいなら --moduleResolution の意味を言ってみてよ
200 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 14:05:44.07 ID:ipEE3CyC.net] >>191 あと、 --moduleResolution node で認識される*.d.tsの書き方も言ってみてよ これドキュメントに書いてないんだよな
201 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 14:22:21.52 ID:ipEE3CyC.net] qiita.com/vvakame/items/72d22e33632178f7db24 この人の↑これを見るのが一番まとまってて分かり易い > ・declare module "hoge" 形式の定義は利用できない って書いてあるけど実際はもう少し修正しないと駄目だった とりあえず適当に修正すれば通るように出来るけど何が問題なのか ドキュメントが見つからず確証が持ててない
202 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 17:21:06.80 ID:FKcC8XYP.net] みんなはcommonjs使うからハマらないっての クイズじゃなくて何がしたくてできないのかのほうを書けよ
203 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 19:30:10.53 ID:ipEE3CyC.net] >>195 >>194 の話はcommonjsとか関係無いよ、モジュール全般の話でしょ それにブラウザからcommonjsロードできないのにみんな使うってのはおかしいでしょ
204 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 21:26:21.10 ID:FKcC8XYP.net] 貴殿の力量、拝察して候
205 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 10:19:05.81 ID:kKfPXzbs.net] JavaScriptから来た人には歴史的経緯と後付モジュール機構は常識の部類なんだろうけど、他言語からくるとjs/tsのモジュール関係は病んでるよな
206 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 14:10:10.49 ID:pw0cS8Zr.net] >>197 最後にはそれかよw ちゃんと具体的に書いてくれないと完全に負け惜しみにしか聞こえないよ
207 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 14:24:44.17 ID:pw0cS8Zr.net] >>198 TypeScriptには内部モジュール(内部は造語)があって外部モジュールについては あまり重要視されてなかった経緯があるからね module→namespaceって名前を変えたけどmoduleキーワードは今も使える もはや混乱の元でしかないし<<<reference file="hoge"/>ももはや役割を終えてるからなくした方がいいな で、importの意味が1.6でしれっとそれより前の解釈と思いっきり変わってしまったのが混乱の元だ とりあえずVSCodeのソースを見れば最近の*.tsの書き方が分かる 俺はそれ見て同じ書き方をしようとしてmodule,referenceから移行しようとして importがトンでもない事になってる事にやっと気付いた
208 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 14:38:18.32 ID:HDdwtYdo.net] requireからES6 modulesまでの変遷は確かに知らずに見ると混乱する NodeのStreamAPIと違ってES6 modulesで古い情報にフィルタかけられるのが救い
209 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 15:03:49.80 ID:pw0cS8Zr.net] >>197 みたいにNode.jsオンリーで歴史的経緯も知らずにnpm installだけして 使ってる人にはimportでハマルとか言ってる奴はプッっとしか思わないんだろうね ま、そういう奴が居るって事は1.6の変更は意味があったといえる 俺は1.0ぐらいからブラウザ用にmodule,referenceでゴリゴリ書いてたから 移行するのがスゲー大変だった しかし、お陰で汎用的な機能はNode.jsとブラウザの両方で使えるように 書けるようになったから移行する意味はあった(それにES6のmoduleにも対応してるはず)
210 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 12:12:11.54 ID:ChRzt0VQ.net] webpackとか使うとjsの場合以下のようにtemplateとしてhtmlコードを取り込むことができますが、 ``` export default { template: require('./index.html'), } ``` typeScript単体で使う場合で似たようなことをする方法ってありますか?
211 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 14:52:35.66 ID:H1ToiAO7.net] >>203 1.6からjsxに対応したからとりあえず typescript jsx で検索してみなよ それが目的のものかは分からんけど
212 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 14:25:20.13 ID:EB80mx/+.net] https://twitter.com/bterlson/status/692489384654999552 ES2016 will likely not contain async functions.
213 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 17:10:41.49 ID:LlSYvxYC.net] 安心してください、TypeScriptはasyncが使えます
214 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 16:04:12.96 ID:7HipHDXr.net] TypeScript 1.8ベータにはJavaScript統合、シームレス関数コンポーネントなどが追加される www.infoq.com/jp/news/2016/02/announcing-typescript-18
215 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 01:27:25.39 ID:Krz+De6m.net] >>207 Announcing TypeScript 1.8 Beta https://blogs.msdn.microsoft.com/typescript/2016/01/28/announcing-typescript-1-8-beta/ TypeScript 1.8.0-beta 変更点 qiita.com/vvakame/items/31f5c45ff49de67d5634
216 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 11:57:21.91 ID:tB/7lfI+.net] typeScriptでつくられたOSSなプロダクトって何があるのかな。 typeScriptの勉強に使えそうな手軽なサイズのものがいいんですが 特にVSC以外で
217 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 12:46:41.49 ID:whWT7zC/.net] vs版1.7.6を入れたのにバージョン情報では 1.7.5と表示されるんだけどミスってる? npm installでも1.7.5だった
218 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 21:36:59.74 ID:tB/7lfI+.net] typeScriptでWebWorkerのコードを書こうとするとpostMessage関数で怒られるんです。 onmessage = function(e) { console.log('Message received from main script'); var workerResult = 'Result: ' + (e.data[0] * e.data[1]); console.log('Posting message back to main script'); postMessage(workerResult); //<―ここ } error TS2346: Supplied parameters do not match any signature of call target. パラメータがあってないって話なんですが定義を見てみると declare function postMessage(message: any, targetOrigin: string, ports?: any): void; とありtargetOriginが必要みたいな記述になっています 定義の参照先が違うせいだと思うんですが直し方がわかりません。ご教示下さい 参考 https://developer.mozilla.org/ja/docs/Web/Guide/Performance/Using_web_workers
219 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 22:34:57.47 ID:0bFQuZrs.net] ES以外の定義が違うなら自分でプルリク出さないと直らないぞ DOM周りは基本放置だからな
220 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 23:19:19.89 ID:DcD4rrQS.net] 1.7.5に入ってるlib.webworker.d.tsには WorkerインターフェースにpostMessage(message: any, ports?: any): void グローバルにpostMessage(data: any): void ってなってるけど
221 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:50:38.42 ID:SL3t4ard.net] >>213 先頭行に /// <reference path="lib.webworker.d.ts" /> と入れてもエラーが出るんですが、どうすればいいんでしょう error TS6053: File 'lib.webworker.d.ts' not found.
222 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 16:34:47.12 ID:DMjW/lz+.net] https://developer.mozilla.org/ja/docs/Web/API/Window/postMessage https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage を見ても第2引数は必要 引数要らないバージョンは https://developer.mozilla.org/en-US/docs/Web/API/MessagePort/postMessage のMessagePort用だな
223 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 16:42:47.45 ID:DMjW/lz+.net] いや間違えた… window.postMessage以外は第2引数が省略可能だな ただwindow.postMessageも第2引数を省略すると"*"が指定された時と同じ動作をするように ブラウザが勝手に対応してるっぽいな 格オブジェクト毎に微妙に役割りが違うものを全部一緒くたにpostMessageにしてるから 結構ややこしい事になってるな… とりあえず>>214 はwindow.postMessageを使ってるのであれば 第2引数に"*"を指定すればいいはずだよ
224 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 16:44:08.08 ID:DMjW/lz+.net] 格オブジェクト→各オブジェクト 念の為…連投スマン
225 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 17:00:54.46 ID:DMjW/lz+.net] 何度もごめん やっと本質が理解できた 根本的な解決には2.0にならないとダメらしいな それまではpostMessageには"*"とかundefinedを指定して誤魔化すのが一番手っ取り早い
226 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 10:23:55.62 ID:+Fbk6tbu.net] いえ。聞きたいことは golobalscopeの参照先を lib.webworker.d.ts にしたいわけです。 ``` new Wroker(“./worker.js”); // <―ここのworker.js内のグローバルスコープをなんとかしたい ``` 上記のように別スレッドでwroker.jsを動かすわけですけど、 worker.js内のグローバルスコープはdocumetにアクセスできなかったり独自のものみたいです。 それで参照先を lib.webworker.d.tsにしたくて/// <reference path="lib.webworker.d.ts" />としても ファイルがないと怒られます。 typescript自身が持っているd.tsファイルに対してのリファレンスの貼り方を教えていただきたいのです。
227 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 10:35:21.09 ID:wvAk6z1k.net] >>219 https://github.com/Microsoft/TypeScript/wiki/Roadmap の2.0にあるImprove lib.d.ts modularityがそれを簡単にやる為のものらしい 要するに今のところそういう事が簡単に出来無いってこと blog.scottlogic.com/2015/08/10/ts-vs-proj.html この辺に一応回避方法が書いてあるよ
228 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 13:52:50.82 ID:+Fbk6tbu.net] >>220 情報ありがとうございます。 とりあえず ``` (<any>postMessage)(workerResult); ``` と書いてエラー抑制で回避することにします。
229 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 17:38:32.66 ID:lb9byLOu.net] いい方法が見つかるまではtsconfig.jsonの"files"にlib.*.d.tsのパスを入れておけばいいよ tsconfig.jsonの書き方と使い方は公式Wiki参照
230 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 17:13:14.79 ID:YBiR9mLr.net] NonNullableきたこれでかつる
231 名前:デフォルトの名無しさん [2016/02/23(火) 10:35:12.67 ID:6s2CAaJ0.net] Announcing TypeScript 1.8 https://blogs.msdn.microsoft.com/typescript/2016/02/22/announcing-typescript-1-8-2/
232 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 11:46:00.00 ID:UPC5owG9.net] >>224 おつ TypeScript for Visual Studio 2015 は Details > Releases から 1.8.4 を選ばないと 以前のものがダウンロードされるので注意。 あと Visual Studio Code のインテリセンス等の挙動は tscへのパスの差し
233 名前:ヨえだけでは完璧ではないぽい。なにか方法があるかもしれないが [] [ここ壊れてます]
234 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 12:25:15.11 ID:MgSDdSDU.net] VSCodeは自前でtsserver.jsを持ってるからそれを差し替えないと駄目でしょ 下手に差し替えないでバージョンアップを待てばいいんじゃね? すぐするでしょ
235 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 12:28:20.34 ID:MgSDdSDU.net] ちなみにメインで使ってるわけじゃないけど、なんかVSCodeって使いづらいような気がしてきた バージョンアップで改善されてくとは思うけど、メインで使ってる人は使い心地がどうなのか知りたい
236 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 19:37:32.88 ID:cGyLx1gy.net] for (let i = ...) は許されるのに if (let o = ...) や while (let ...) が許されないのは仕様でしょうか? nullスキップをしたいときにこの書式を使いたい場合が結構あるのですが
237 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 21:55:18.34 ID:aRwJuOw8.net] 仕様。仕様書見れば書いてあるよ let o; if (o = ...) と書いても結果は変わらないと思う o がブロックの外に漏れるというだけで
238 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 23:27:54.96 ID:cGyLx1gy.net] >>229 元のJavaScriptや、もしかするとJavaに倣った仕様なんですかね どうせJavaほど真偽判定に厳しくないんだから、C++並に緩くして欲しいなぁ
239 名前:デフォルトの名無しさん mailto:sage [2016/02/25(木) 10:03:46.85 ID:pumiDuUu.net] >>230 仕様ってのはecma262(JavaScript)の事ね TypeScriptはJavaScript(主にES6以降)+型だからJavaScriptの文法を壊すような 機能追加はしちゃ駄目だと思うし、そういうのはほとんど無いと思う
240 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 15:07:54.17 ID:RrjC3Y1y.net] chrome extensionの開発にtypeScript使っています。 型があるとドキュメントを見なくてもメソッドとかプロパティを探せるので 捗ります。 本当にES2015 + type って感じなんですね。そんなに仕様が分かっていなくても何となく使えるのがいいです。 一つお聞きしたいのですが Node型からlengthプロパティを使いたいのですが 参照先にlib.d.tsにはないみたいでエラーなります。 chromeデバッカでは見えているのですが、、、 とりあえず以下のように回避しているんですが const selection = window.getSelection() (<any> selection.focusNode).length 本来の対応方針を教えて下さい。 例えばどこかに専用のファイルを作ってそこで interface Node { } 自分用のinterfaceを作るとかですかね?
241 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 15:39:48.75 ID:tDWJCpRY.net] >>232 Node.length って何? すべての Node は持っているわけではないと思うが エレメントの種類が限定できるなら <any> のところにそのクラス名を書けば?
242 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 17:00:58.63 ID:RZS145YN.net] babelとtypescriptって何が違うの? あとes6が普及したらtypescript使う意味ってなくならない?
243 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 17:04:13.70 ID:RrjC3Y1y.net] >>233 すいませんでした lengthプロパティはNodeインターフェースにあるのが正しいのかと勘違いしてました。 Element型にキャストして使うことにしました。
244 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 17:11:25.26 ID:RrjC3Y1y.net] >>234 ES2015 + 型という図式です。 VSCとかと連携すると補完が聞いて素敵です。 EcmaScriptに型が付く予定はないと思うので差別化はできているのではないでしょうか? 逆に言語として学習コストが低くていいのではないかと(ES2015とあんまり変わらない点)。 特に新規のライブラリを使うときはEditorが教えてくれるので、凄くいいです。
245 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 17:29:33.07 ID:tDWJCpRY.net] >>235 Element型にもlengthってあったっけ… >>234 es6が普及した場合、むしろBabelがその役割を終える TypeScriptと競合するのは、JSDocの型注釈 @type かな JS+JSDocの
246 名前:記述量を減らしたのがTypeScriptだと思う [] [ここ壊れてます]
247 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 18:49:06.70 ID:9M5RRL5I.net] >>235 ちゃんとリファレンスは読んだのか? https://developer.mozilla.org/ja/docs/Web/API/Selection
248 名前:デフォルトの名無しさん mailto:sage [2016/03/04(金) 16:37:36.83 ID:5mk497Pl.net] ちなみにjQueryでDOMをいじくるのが主な目的の人には向かないね jquery.d.tsがany使いまくりだから素直にJavaScriptをそのまま使う事を勧める それとDOMはJavaScriptとして使ってる内は気付かないけど 実はかなり型が複雑で理解してないと>>232 みたいな問題にぶつかる 悪いのはTypeScriptではなくて元の仕様がそうなってる 直接DOMをいじる場合も型をちゃんと全部把握するかJavaScriptをそのまま使う方がいい
249 名前:デフォルトの名無しさん mailto:sage [2016/03/04(金) 17:04:24.90 ID:JX9S2zww.net] >>239 むしろ型を把握していない人ほどオススメなのでは。 Editorが教えてくれるようになるし 実行時にエラーになってデバッガでチェックというサイクルを何度も踏む手間が省ける。
250 名前:デフォルトの名無しさん mailto:sage [2016/03/04(金) 17:55:19.19 ID:5mk497Pl.net] >>240 いやいや、例えばgetElementById()で返すのはHTMLElementだけど これはlib.d.tsでextends HTMLElement検索すると分かるけど、全てのベースクラスだから 使う時は毎回適切にキャストする必要があって面倒臭い で、間違うとコンパイルエラーとか実行時エラーになる ちなみにjQueryとDOMでの話であって一般的には型があった方がいいのはその通り
251 名前:デフォルトの名無しさん mailto:sage [2016/03/04(金) 20:45:00.83 ID:JX9S2zww.net] >>241 ちなみにHTMLElementの子クラスをキャスト候補として出す機能とかありますかね? typeScriptというよりもVSCよりな質問かもしれませんけど。
252 名前:デフォルトの名無しさん mailto:sage [2016/03/04(金) 20:49:58.95 ID:JX9S2zww.net] “error TS2304: Cannot find name” の対応ってどうされてますか? 例えばchrome Extension作りたくて chrome.d.tsを用意したんですが RROR in …/typings/browser/ambient/chrome/chrome.d.ts (5221,70): error TS2304: Cannot find name 'DirectoryEntry'. ERROR in …/typings/browser/ambient/chrome/chrome.d.ts (5807,22): error TS2304: Cannot find name 'MediaStreamConstraints'. ERROR in …/typings/browser/ambient/chrome/chrome.d.ts (5809,22): error TS2304: Cannot find name 'MediaStreamConstraints'. ERROR in …/typings/browser/ambient/chrome/chrome.d.ts (5819,73): error TS2304: Cannot find name 'MediaStream'. 以下の様なエラーメッセージが出ます。 それで依存している型定義ファイルを探して追加するとまたこのエラーメッセージが増えていくので 該当箇所をanyとかにしてごまかしているんですが、 本来の対応方針としてどうすればいいんでしょうか?