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/
探検
TypeScript part2 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2015/04/30(木) 18:37:29.98ID:ynMflk1l171デフォルトの名無しさん
2016/01/04(月) 21:24:41.15ID:tFJ0VkMO これが生成された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.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;
})();
改行多すぎで書き込めないから二つに区切る。
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.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;
})();
172デフォルトの名無しさん
2016/01/04(月) 21:25:29.78ID:tFJ0VkMO 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を代入しているような気がするんだけどダメなんだなぁ
__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を代入しているような気がするんだけどダメなんだなぁ
173デフォルトの名無しさん
2016/01/04(月) 21:27:50.70ID:tFJ0VkMO >>170
なるほど、やっぱり一応「仕様」なのね。
http://visible-true.blogspot.jp/2013/01/typescript-bridge-pattern.html
ここを参考に抽象クラス書いてみようとしたら毎回エラーになったのがきっかけで気づいたんだ。
普段は副作用のないコードを書くようにしてるから問題ないけど、気持ち悪いな...
なるほど、やっぱり一応「仕様」なのね。
http://visible-true.blogspot.jp/2013/01/typescript-bridge-pattern.html
ここを参考に抽象クラス書いてみようとしたら毎回エラーになったのがきっかけで気づいたんだ。
普段は副作用のないコードを書くようにしてるから問題ないけど、気持ち悪いな...
174デフォルトの名無しさん
2016/01/04(月) 21:29:44.16ID:jSUxRRs2 console.log(Asian.name);
をもう一度実行
をもう一度実行
175デフォルトの名無しさん
2016/01/04(月) 21:58:10.67ID:tFJ0VkMO >>174
最後のconsole.log(Asian.name); をふたつにするってこと?
↓こうなるだけだけど...そうじゃなくて?
Human class name
Asian class name
ass
Asian class name
ass
最後のconsole.log(Asian.name); をふたつにするってこと?
↓こうなるだけだけど...そうじゃなくて?
Human class name
Asian class name
ass
Asian class name
ass
176デフォルトの名無しさん
2016/01/04(月) 22:06:12.44ID:tFJ0VkMO >>172
うぉお自己レスだがいまさら理解
definePropertyにアクセスするとgetのfunctionが実行されるから、
extendsのときの代入で実行が走ってるのね
超すっきりしたわ
なるほどね
うぉお自己レスだがいまさら理解
definePropertyにアクセスするとgetのfunctionが実行されるから、
extendsのときの代入で実行が走ってるのね
超すっきりしたわ
なるほどね
177デフォルトの名無しさん
2016/01/04(月) 22:18:27.58ID:tFJ0VkMO いやまてこれダメじゃねーか
getterちゃんと継承できてねーぞ
...できてねーよな?
getterちゃんと継承できてねーぞ
...できてねーよな?
178デフォルトの名無しさん
2016/01/05(火) 00:16:07.40ID:JRpiyNmr 上書きしなきゃ親のが呼び出されるでしょ
179デフォルトの名無しさん
2016/01/05(火) 04:38:20.48ID:uTMnp3Vg https://github.com/Microsoft/TypeScript/issues/1520
存在しないユースケースだから修正しない。
使いたければ__extends関数を自作してオーバーライドしろとさ。
存在しないユースケースだから修正しない。
使いたければ__extends関数を自作してオーバーライドしろとさ。
180デフォルトの名無しさん
2016/01/05(火) 13:11:51.67ID:FYDa5kHc >>178
継承されてないな
まず最初に言っておくけどAsian内のgetを消すとAsian.nameは
Function.nameにアクセスする事になってAsianと表示されるからfuncとかにしておく
そうするとhomoとだけ表示されてHuman class nameは表示されないから継承されてない
ちなみに--target ES6の場合はconsole.log('Human class name');が実行されて
なおかつ継承もされない
要するに現状でES6と同じ挙動という事になるから自前の__extendsを作ると
将来ES6でコンパイルした時に困る事になる (継承をカスタマイズ出来ないし)
現状で問題の無いコードを書くしかないというのが結論だな
継承されてないな
まず最初に言っておくけどAsian内のgetを消すとAsian.nameは
Function.nameにアクセスする事になってAsianと表示されるからfuncとかにしておく
そうするとhomoとだけ表示されてHuman class nameは表示されないから継承されてない
ちなみに--target ES6の場合はconsole.log('Human class name');が実行されて
なおかつ継承もされない
要するに現状でES6と同じ挙動という事になるから自前の__extendsを作ると
将来ES6でコンパイルした時に困る事になる (継承をカスタマイズ出来ないし)
現状で問題の無いコードを書くしかないというのが結論だな
181デフォルトの名無しさん
2016/01/05(火) 13:24:39.62ID:FYDa5kHc ES6のclassは__extendsでやっている事のシンタックスシュガーだってのが
分かるおもしろい例だった
結局ES6になってもプロトタイプベースのオブジェクト指向っていうところは
変わってないんだよね
分かるおもしろい例だった
結局ES6になってもプロトタイプベースのオブジェクト指向っていうところは
変わってないんだよね
182デフォルトの名無しさん
2016/01/06(水) 08:53:19.05ID:Fwd934PG >>179
神だ、やっと神と、、、!
ありがとう!
ユースケースがないってのはちょっとひっかかるけどな。
キーワードstaticってクラスに属してるだけでstatic getが副作用を起こさない、他の影響をうけないって保証されてるわけじゃないし。
そう書けってことではあるんだけどね。
神だ、やっと神と、、、!
ありがとう!
ユースケースがないってのはちょっとひっかかるけどな。
キーワードstaticってクラスに属してるだけでstatic getが副作用を起こさない、他の影響をうけないって保証されてるわけじゃないし。
そう書けってことではあるんだけどね。
183デフォルトの名無しさん
2016/01/18(月) 13:03:11.26ID:ELUPuNqk MSYS上のvimからtsuquyomi使えんかった
多分Nodeがマウントされたパスとか/c/から始まるパスを理解できないんだろうな
MSYS版Nodeがあればなぁ
多分Nodeがマウントされたパスとか/c/から始まるパスを理解できないんだろうな
MSYS版Nodeがあればなぁ
184デフォルトの名無しさん
2016/01/18(月) 17:46:53.97ID:ELUPuNqk よく見たらmingw側にNodeがあったので試してみたけどバージョンが古いせいか駄目だったぜ
TypeScript書くときは大人しくGVimにしておくか
TypeScript書くときは大人しくGVimにしておくか
185デフォルトの名無しさん
2016/01/22(金) 13:05:16.12ID:yW17RJ8f ChakraCoreを使ったNode.jsが動いたらしい
しかし最近のMSはプロジェクト名にCoreを付けまくってるな
しかし最近のMSはプロジェクト名にCoreを付けまくってるな
186デフォルトの名無しさん
2016/01/23(土) 10:08:20.25ID:ym0h+5An --module commonjsの状態でmoduleとnamespaceを使わずに
export function ...
export var ...
って書いたソースがcommonjsのモジュールとしてコンパイルできるのに
外部からimportしようとするとモジュールが見つからないって怒られて困った
--module amdだと大丈夫みたいなんだけど、バグだったりするの?
export function ...
export var ...
って書いたソースがcommonjsのモジュールとしてコンパイルできるのに
外部からimportしようとするとモジュールが見つからないって怒られて困った
--module amdだと大丈夫みたいなんだけど、バグだったりするの?
187デフォルトの名無しさん
2016/01/23(土) 12:35:34.21ID:xXuhphCo 公式のwiki読め
188デフォルトの名無しさん
2016/01/23(土) 17:32:00.25ID:ym0h+5An import時のパスが./で始まるかどうかの違いでした
import * as test from "test"; // amdはOK, commonjsはエラー
import * as test from "./test"; // amd, commonjs 共にOK
test.tsを./node_modulesに突っ込んで--moduleResolution nodeなら前者もOK
import * as test from "test"; // amdはOK, commonjsはエラー
import * as test from "./test"; // amd, commonjs 共にOK
test.tsを./node_modulesに突っ込んで--moduleResolution nodeなら前者もOK
189デフォルトの名無しさん
2016/01/24(日) 10:30:33.12ID:jiNDRvMm190デフォルトの名無しさん
2016/01/25(月) 13:40:35.40ID:ipEE3CyC TypeScriptのモジュールの扱いが激烈に難解になったからみんなハマルだろうな
俺は大体理解できたけど
俺は大体理解できたけど
191デフォルトの名無しさん
2016/01/25(月) 13:50:19.91ID:FKcC8XYP 苦笑
192デフォルトの名無しさん
2016/01/25(月) 14:01:32.82ID:ipEE3CyC >>191
そんなおかしいなら --moduleResolution の意味を言ってみてよ
そんなおかしいなら --moduleResolution の意味を言ってみてよ
193デフォルトの名無しさん
2016/01/25(月) 14:05:44.07ID:ipEE3CyC194デフォルトの名無しさん
2016/01/25(月) 14:22:21.52ID:ipEE3CyC http://qiita.com/vvakame/items/72d22e33632178f7db24
この人の↑これを見るのが一番まとまってて分かり易い
> ・declare module "hoge" 形式の定義は利用できない
って書いてあるけど実際はもう少し修正しないと駄目だった
とりあえず適当に修正すれば通るように出来るけど何が問題なのか
ドキュメントが見つからず確証が持ててない
この人の↑これを見るのが一番まとまってて分かり易い
> ・declare module "hoge" 形式の定義は利用できない
って書いてあるけど実際はもう少し修正しないと駄目だった
とりあえず適当に修正すれば通るように出来るけど何が問題なのか
ドキュメントが見つからず確証が持ててない
195デフォルトの名無しさん
2016/01/25(月) 17:21:06.80ID:FKcC8XYP みんなはcommonjs使うからハマらないっての
クイズじゃなくて何がしたくてできないのかのほうを書けよ
クイズじゃなくて何がしたくてできないのかのほうを書けよ
196デフォルトの名無しさん
2016/01/25(月) 19:30:10.53ID:ipEE3CyC197デフォルトの名無しさん
2016/01/25(月) 21:26:21.10ID:FKcC8XYP 貴殿の力量、拝察して候
198デフォルトの名無しさん
2016/01/26(火) 10:19:05.81ID:kKfPXzbs JavaScriptから来た人には歴史的経緯と後付モジュール機構は常識の部類なんだろうけど、他言語からくるとjs/tsのモジュール関係は病んでるよな
199デフォルトの名無しさん
2016/01/26(火) 14:10:10.49ID:pw0cS8Zr200デフォルトの名無しさん
2016/01/26(火) 14:24:44.17ID:pw0cS8Zr >>198
TypeScriptには内部モジュール(内部は造語)があって外部モジュールについては
あまり重要視されてなかった経緯があるからね
module→namespaceって名前を変えたけどmoduleキーワードは今も使える
もはや混乱の元でしかないし<<<reference file="hoge"/>ももはや役割を終えてるからなくした方がいいな
で、importの意味が1.6でしれっとそれより前の解釈と思いっきり変わってしまったのが混乱の元だ
とりあえずVSCodeのソースを見れば最近の*.tsの書き方が分かる
俺はそれ見て同じ書き方をしようとしてmodule,referenceから移行しようとして
importがトンでもない事になってる事にやっと気付いた
TypeScriptには内部モジュール(内部は造語)があって外部モジュールについては
あまり重要視されてなかった経緯があるからね
module→namespaceって名前を変えたけどmoduleキーワードは今も使える
もはや混乱の元でしかないし<<<reference file="hoge"/>ももはや役割を終えてるからなくした方がいいな
で、importの意味が1.6でしれっとそれより前の解釈と思いっきり変わってしまったのが混乱の元だ
とりあえずVSCodeのソースを見れば最近の*.tsの書き方が分かる
俺はそれ見て同じ書き方をしようとしてmodule,referenceから移行しようとして
importがトンでもない事になってる事にやっと気付いた
201デフォルトの名無しさん
2016/01/26(火) 14:38:18.32ID:HDdwtYdo requireからES6 modulesまでの変遷は確かに知らずに見ると混乱する
NodeのStreamAPIと違ってES6 modulesで古い情報にフィルタかけられるのが救い
NodeのStreamAPIと違ってES6 modulesで古い情報にフィルタかけられるのが救い
202デフォルトの名無しさん
2016/01/26(火) 15:03:49.80ID:pw0cS8Zr >>197みたいにNode.jsオンリーで歴史的経緯も知らずにnpm installだけして
使ってる人にはimportでハマルとか言ってる奴はプッっとしか思わないんだろうね
ま、そういう奴が居るって事は1.6の変更は意味があったといえる
俺は1.0ぐらいからブラウザ用にmodule,referenceでゴリゴリ書いてたから
移行するのがスゲー大変だった
しかし、お陰で汎用的な機能はNode.jsとブラウザの両方で使えるように
書けるようになったから移行する意味はあった(それにES6のmoduleにも対応してるはず)
使ってる人にはimportでハマルとか言ってる奴はプッっとしか思わないんだろうね
ま、そういう奴が居るって事は1.6の変更は意味があったといえる
俺は1.0ぐらいからブラウザ用にmodule,referenceでゴリゴリ書いてたから
移行するのがスゲー大変だった
しかし、お陰で汎用的な機能はNode.jsとブラウザの両方で使えるように
書けるようになったから移行する意味はあった(それにES6のmoduleにも対応してるはず)
203デフォルトの名無しさん
2016/01/27(水) 12:12:11.54ID:ChRzt0VQ webpackとか使うとjsの場合以下のようにtemplateとしてhtmlコードを取り込むことができますが、
```
export default {
template: require('./index.html'),
}
```
typeScript単体で使う場合で似たようなことをする方法ってありますか?
```
export default {
template: require('./index.html'),
}
```
typeScript単体で使う場合で似たようなことをする方法ってありますか?
204デフォルトの名無しさん
2016/01/27(水) 14:52:35.66ID:H1ToiAO7205デフォルトの名無しさん
2016/01/29(金) 14:25:20.13ID:EB80mx/+ https://twitter.com/bterlson/status/692489384654999552
ES2016 will likely not contain async functions.
ES2016 will likely not contain async functions.
206デフォルトの名無しさん
2016/01/29(金) 17:10:41.49ID:LlSYvxYC 安心してください、TypeScriptはasyncが使えます
207デフォルトの名無しさん
2016/02/05(金) 16:04:12.96ID:7HipHDXr TypeScript 1.8ベータにはJavaScript統合、シームレス関数コンポーネントなどが追加される
http://www.infoq.com/jp/news/2016/02/announcing-typescript-18
http://www.infoq.com/jp/news/2016/02/announcing-typescript-18
208デフォルトの名無しさん
2016/02/06(土) 01:27:25.39ID:Krz+De6m >>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 変更点
http://qiita.com/vvakame/items/31f5c45ff49de67d5634
Announcing TypeScript 1.8 Beta
https://blogs.msdn.microsoft.com/typescript/2016/01/28/announcing-typescript-1-8-beta/
TypeScript 1.8.0-beta 変更点
http://qiita.com/vvakame/items/31f5c45ff49de67d5634
209デフォルトの名無しさん
2016/02/12(金) 11:57:21.91ID:tB/7lfI+ typeScriptでつくられたOSSなプロダクトって何があるのかな。
typeScriptの勉強に使えそうな手軽なサイズのものがいいんですが
特にVSC以外で
typeScriptの勉強に使えそうな手軽なサイズのものがいいんですが
特にVSC以外で
210デフォルトの名無しさん
2016/02/12(金) 12:46:41.49ID:whWT7zC/ vs版1.7.6を入れたのにバージョン情報では
1.7.5と表示されるんだけどミスってる?
npm installでも1.7.5だった
1.7.5と表示されるんだけどミスってる?
npm installでも1.7.5だった
211デフォルトの名無しさん
2016/02/12(金) 21:36:59.74ID:tB/7lfI+ 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
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
212デフォルトの名無しさん
2016/02/12(金) 22:34:57.47ID:0bFQuZrs ES以外の定義が違うなら自分でプルリク出さないと直らないぞ
DOM周りは基本放置だからな
DOM周りは基本放置だからな
213デフォルトの名無しさん
2016/02/12(金) 23:19:19.89ID:DcD4rrQS 1.7.5に入ってるlib.webworker.d.tsには
WorkerインターフェースにpostMessage(message: any, ports?: any): void
グローバルにpostMessage(data: any): void
ってなってるけど
WorkerインターフェースにpostMessage(message: any, ports?: any): void
グローバルにpostMessage(data: any): void
ってなってるけど
214デフォルトの名無しさん
2016/02/13(土) 12:50:38.42ID:SL3t4ard >>213
先頭行に
/// <reference path="lib.webworker.d.ts" />
と入れてもエラーが出るんですが、どうすればいいんでしょう
error TS6053: File 'lib.webworker.d.ts' not found.
先頭行に
/// <reference path="lib.webworker.d.ts" />
と入れてもエラーが出るんですが、どうすればいいんでしょう
error TS6053: File 'lib.webworker.d.ts' not found.
215デフォルトの名無しさん
2016/02/13(土) 16:34:47.12ID:DMjW/lz+216デフォルトの名無しさん
2016/02/13(土) 16:42:47.45ID:DMjW/lz+ いや間違えた…
window.postMessage以外は第2引数が省略可能だな
ただwindow.postMessageも第2引数を省略すると"*"が指定された時と同じ動作をするように
ブラウザが勝手に対応してるっぽいな
格オブジェクト毎に微妙に役割りが違うものを全部一緒くたにpostMessageにしてるから
結構ややこしい事になってるな…
とりあえず>>214はwindow.postMessageを使ってるのであれば
第2引数に"*"を指定すればいいはずだよ
window.postMessage以外は第2引数が省略可能だな
ただwindow.postMessageも第2引数を省略すると"*"が指定された時と同じ動作をするように
ブラウザが勝手に対応してるっぽいな
格オブジェクト毎に微妙に役割りが違うものを全部一緒くたにpostMessageにしてるから
結構ややこしい事になってるな…
とりあえず>>214はwindow.postMessageを使ってるのであれば
第2引数に"*"を指定すればいいはずだよ
217デフォルトの名無しさん
2016/02/13(土) 16:44:08.08ID:DMjW/lz+ 格オブジェクト→各オブジェクト 念の為…連投スマン
218デフォルトの名無しさん
2016/02/13(土) 17:00:54.46ID:DMjW/lz+ 何度もごめん
やっと本質が理解できた
根本的な解決には2.0にならないとダメらしいな
それまではpostMessageには"*"とかundefinedを指定して誤魔化すのが一番手っ取り早い
やっと本質が理解できた
根本的な解決には2.0にならないとダメらしいな
それまではpostMessageには"*"とかundefinedを指定して誤魔化すのが一番手っ取り早い
219デフォルトの名無しさん
2016/02/14(日) 10:23:55.62ID:+Fbk6tbu いえ。聞きたいことは
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ファイルに対してのリファレンスの貼り方を教えていただきたいのです。
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ファイルに対してのリファレンスの貼り方を教えていただきたいのです。
220デフォルトの名無しさん
2016/02/14(日) 10:35:21.09ID:wvAk6z1k >>219
https://github.com/Microsoft/TypeScript/wiki/Roadmap
の2.0にあるImprove lib.d.ts modularityがそれを簡単にやる為のものらしい
要するに今のところそういう事が簡単に出来無いってこと
http://blog.scottlogic.com/2015/08/10/ts-vs-proj.html
この辺に一応回避方法が書いてあるよ
https://github.com/Microsoft/TypeScript/wiki/Roadmap
の2.0にあるImprove lib.d.ts modularityがそれを簡単にやる為のものらしい
要するに今のところそういう事が簡単に出来無いってこと
http://blog.scottlogic.com/2015/08/10/ts-vs-proj.html
この辺に一応回避方法が書いてあるよ
221デフォルトの名無しさん
2016/02/14(日) 13:52:50.82ID:+Fbk6tbu222デフォルトの名無しさん
2016/02/14(日) 17:38:32.66ID:lb9byLOu いい方法が見つかるまではtsconfig.jsonの"files"にlib.*.d.tsのパスを入れておけばいいよ
tsconfig.jsonの書き方と使い方は公式Wiki参照
tsconfig.jsonの書き方と使い方は公式Wiki参照
223デフォルトの名無しさん
2016/02/19(金) 17:13:14.79ID:YBiR9mLr NonNullableきたこれでかつる
224デフォルトの名無しさん
2016/02/23(火) 10:35:12.67ID:6s2CAaJ0 Announcing TypeScript 1.8
https://blogs.msdn.microsoft.com/typescript/2016/02/22/announcing-typescript-1-8-2/
https://blogs.msdn.microsoft.com/typescript/2016/02/22/announcing-typescript-1-8-2/
225デフォルトの名無しさん
2016/02/23(火) 11:46:00.00ID:UPC5owG9 >>224 おつ
TypeScript for Visual Studio 2015 は Details > Releases から 1.8.4 を選ばないと
以前のものがダウンロードされるので注意。
あと Visual Studio Code のインテリセンス等の挙動は
tscへのパスの差し替えだけでは完璧ではないぽい。なにか方法があるかもしれないが
TypeScript for Visual Studio 2015 は Details > Releases から 1.8.4 を選ばないと
以前のものがダウンロードされるので注意。
あと Visual Studio Code のインテリセンス等の挙動は
tscへのパスの差し替えだけでは完璧ではないぽい。なにか方法があるかもしれないが
226デフォルトの名無しさん
2016/02/23(火) 12:25:15.11ID:MgSDdSDU VSCodeは自前でtsserver.jsを持ってるからそれを差し替えないと駄目でしょ
下手に差し替えないでバージョンアップを待てばいいんじゃね?
すぐするでしょ
下手に差し替えないでバージョンアップを待てばいいんじゃね?
すぐするでしょ
227デフォルトの名無しさん
2016/02/23(火) 12:28:20.34ID:MgSDdSDU ちなみにメインで使ってるわけじゃないけど、なんかVSCodeって使いづらいような気がしてきた
バージョンアップで改善されてくとは思うけど、メインで使ってる人は使い心地がどうなのか知りたい
バージョンアップで改善されてくとは思うけど、メインで使ってる人は使い心地がどうなのか知りたい
228デフォルトの名無しさん
2016/02/24(水) 19:37:32.88ID:cGyLx1gy for (let i = ...) は許されるのに
if (let o = ...) や while (let ...) が許されないのは仕様でしょうか?
nullスキップをしたいときにこの書式を使いたい場合が結構あるのですが
if (let o = ...) や while (let ...) が許されないのは仕様でしょうか?
nullスキップをしたいときにこの書式を使いたい場合が結構あるのですが
229デフォルトの名無しさん
2016/02/24(水) 21:55:18.34ID:aRwJuOw8 仕様。仕様書見れば書いてあるよ
let o;
if (o = ...) と書いても結果は変わらないと思う
o がブロックの外に漏れるというだけで
let o;
if (o = ...) と書いても結果は変わらないと思う
o がブロックの外に漏れるというだけで
230デフォルトの名無しさん
2016/02/24(水) 23:27:54.96ID:cGyLx1gy231デフォルトの名無しさん
2016/02/25(木) 10:03:46.85ID:pumiDuUu >>230
仕様ってのはecma262(JavaScript)の事ね
TypeScriptはJavaScript(主にES6以降)+型だからJavaScriptの文法を壊すような
機能追加はしちゃ駄目だと思うし、そういうのはほとんど無いと思う
仕様ってのはecma262(JavaScript)の事ね
TypeScriptはJavaScript(主にES6以降)+型だからJavaScriptの文法を壊すような
機能追加はしちゃ駄目だと思うし、そういうのはほとんど無いと思う
232デフォルトの名無しさん
2016/03/03(木) 15:07:54.17ID:RrjC3Y1y chrome extensionの開発にtypeScript使っています。
型があるとドキュメントを見なくてもメソッドとかプロパティを探せるので
捗ります。
本当にES2015 + type って感じなんですね。そんなに仕様が分かっていなくても何となく使えるのがいいです。
一つお聞きしたいのですが
Node型からlengthプロパティを使いたいのですが
参照先にlib.d.tsにはないみたいでエラーなります。
chromeデバッカでは見えているのですが、、、
とりあえず以下のように回避しているんですが
const selection = window.getSelection()
(<any> selection.focusNode).length
本来の対応方針を教えて下さい。
例えばどこかに専用のファイルを作ってそこで
interface Node {
}
自分用のinterfaceを作るとかですかね?
型があるとドキュメントを見なくてもメソッドとかプロパティを探せるので
捗ります。
本当にES2015 + type って感じなんですね。そんなに仕様が分かっていなくても何となく使えるのがいいです。
一つお聞きしたいのですが
Node型からlengthプロパティを使いたいのですが
参照先にlib.d.tsにはないみたいでエラーなります。
chromeデバッカでは見えているのですが、、、
とりあえず以下のように回避しているんですが
const selection = window.getSelection()
(<any> selection.focusNode).length
本来の対応方針を教えて下さい。
例えばどこかに専用のファイルを作ってそこで
interface Node {
}
自分用のinterfaceを作るとかですかね?
233デフォルトの名無しさん
2016/03/03(木) 15:39:48.75ID:tDWJCpRY234デフォルトの名無しさん
2016/03/03(木) 17:00:58.63ID:RZS145YN babelとtypescriptって何が違うの?
あとes6が普及したらtypescript使う意味ってなくならない?
あとes6が普及したらtypescript使う意味ってなくならない?
235デフォルトの名無しさん
2016/03/03(木) 17:04:13.70ID:RrjC3Y1y236デフォルトの名無しさん
2016/03/03(木) 17:11:25.26ID:RrjC3Y1y >>234
ES2015 + 型という図式です。
VSCとかと連携すると補完が聞いて素敵です。
EcmaScriptに型が付く予定はないと思うので差別化はできているのではないでしょうか?
逆に言語として学習コストが低くていいのではないかと(ES2015とあんまり変わらない点)。
特に新規のライブラリを使うときはEditorが教えてくれるので、凄くいいです。
ES2015 + 型という図式です。
VSCとかと連携すると補完が聞いて素敵です。
EcmaScriptに型が付く予定はないと思うので差別化はできているのではないでしょうか?
逆に言語として学習コストが低くていいのではないかと(ES2015とあんまり変わらない点)。
特に新規のライブラリを使うときはEditorが教えてくれるので、凄くいいです。
237デフォルトの名無しさん
2016/03/03(木) 17:29:33.07ID:tDWJCpRY238デフォルトの名無しさん
2016/03/03(木) 18:49:06.70ID:9M5RRL5I239デフォルトの名無しさん
2016/03/04(金) 16:37:36.83ID:5mk497Pl ちなみにjQueryでDOMをいじくるのが主な目的の人には向かないね
jquery.d.tsがany使いまくりだから素直にJavaScriptをそのまま使う事を勧める
それとDOMはJavaScriptとして使ってる内は気付かないけど
実はかなり型が複雑で理解してないと>>232みたいな問題にぶつかる
悪いのはTypeScriptではなくて元の仕様がそうなってる
直接DOMをいじる場合も型をちゃんと全部把握するかJavaScriptをそのまま使う方がいい
jquery.d.tsがany使いまくりだから素直にJavaScriptをそのまま使う事を勧める
それとDOMはJavaScriptとして使ってる内は気付かないけど
実はかなり型が複雑で理解してないと>>232みたいな問題にぶつかる
悪いのはTypeScriptではなくて元の仕様がそうなってる
直接DOMをいじる場合も型をちゃんと全部把握するかJavaScriptをそのまま使う方がいい
240デフォルトの名無しさん
2016/03/04(金) 17:04:24.90ID:JX9S2zww241デフォルトの名無しさん
2016/03/04(金) 17:55:19.19ID:5mk497Pl >>240
いやいや、例えばgetElementById()で返すのはHTMLElementだけど
これはlib.d.tsでextends HTMLElement検索すると分かるけど、全てのベースクラスだから
使う時は毎回適切にキャストする必要があって面倒臭い
で、間違うとコンパイルエラーとか実行時エラーになる
ちなみにjQueryとDOMでの話であって一般的には型があった方がいいのはその通り
いやいや、例えばgetElementById()で返すのはHTMLElementだけど
これはlib.d.tsでextends HTMLElement検索すると分かるけど、全てのベースクラスだから
使う時は毎回適切にキャストする必要があって面倒臭い
で、間違うとコンパイルエラーとか実行時エラーになる
ちなみにjQueryとDOMでの話であって一般的には型があった方がいいのはその通り
242デフォルトの名無しさん
2016/03/04(金) 20:45:00.83ID:JX9S2zww243デフォルトの名無しさん
2016/03/04(金) 20:49:58.95ID:JX9S2zww “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とかにしてごまかしているんですが、
本来の対応方針としてどうすればいいんでしょうか?
例えば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とかにしてごまかしているんですが、
本来の対応方針としてどうすればいいんでしょうか?
244デフォルトの名無しさん
2016/03/04(金) 23:31:41.69ID:QtC/Wo3p >>243
chrome.d.ts ってこれか? https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/chrome/chrome.d.ts
コードの頭に参照があるから /// <reference path='../filesystem/filesystem.d.ts' />
このあたりが必要なのでは https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/filesystem/filesystem.d.ts
よくわからんが DefinitelyTyped を丸ごともらうか、<reference> それぞれを探してみては?
chrome.d.ts ってこれか? https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/chrome/chrome.d.ts
コードの頭に参照があるから /// <reference path='../filesystem/filesystem.d.ts' />
このあたりが必要なのでは https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/filesystem/filesystem.d.ts
よくわからんが DefinitelyTyped を丸ごともらうか、<reference> それぞれを探してみては?
245デフォルトの名無しさん
2016/03/05(土) 10:47:09.14ID:E0f29hr+ コード中でキャストしないようにと思うと
interface Document { getElementById(id: 'myElement'): HTMLAnchorElement; }
みたいな定義を読ませておくしかないよね
interface Document { getElementById(id: 'myElement'): HTMLAnchorElement; }
みたいな定義を読ませておくしかないよね
246デフォルトの名無しさん
2016/03/05(土) 12:33:38.03ID:jb1F0oyu247デフォルトの名無しさん
2016/03/05(土) 14:42:35.70ID:GXDl5hqY248デフォルトの名無しさん
2016/03/05(土) 15:53:12.74ID:JVykV3V4 とりあえずAngular2+TypeScriptを使えば全てが丸く収まる(はず)
249デフォルトの名無しさん
2016/03/09(水) 02:26:14.01ID:YWG9oDIr250デフォルトの名無しさん
2016/03/09(水) 13:38:59.08ID:YZujmLFz C,C++などの
#ifdef ABC
#endif
みたない構文はありますか?
#ifdef ABC
#endif
みたない構文はありますか?
251デフォルトの名無しさん
2016/03/09(水) 13:55:35.24ID:wC8YUP1c >>250
ない。
もし不要なコードの排除が目的なら、単にif文を使っておいて、
出力した .js に Closure Compiler 等の最適化を行うポストプロセスすると
最終的な .min.js からは無駄なコードを消してくれる場合もある。
ない。
もし不要なコードの排除が目的なら、単にif文を使っておいて、
出力した .js に Closure Compiler 等の最適化を行うポストプロセスすると
最終的な .min.js からは無駄なコードを消してくれる場合もある。
252デフォルトの名無しさん
2016/03/09(水) 14:19:18.40ID:YZujmLFz >>251
なるほど。
でも、さっそく
if(false){
... // 不要なコード
}
としてみたら、
Unreachable code detected.
と出ました。
var use= false;
if (use == true) {
... // 不要なコード
}
で行けました。こんなやり方おかしいですか?
Closure Compiler はビルド後に実行するコマンドでやるのでしょうか?
なるほど。
でも、さっそく
if(false){
... // 不要なコード
}
としてみたら、
Unreachable code detected.
と出ました。
var use= false;
if (use == true) {
... // 不要なコード
}
で行けました。こんなやり方おかしいですか?
Closure Compiler はビルド後に実行するコマンドでやるのでしょうか?
253デフォルトの名無しさん
2016/03/09(水) 15:24:10.02ID:wC8YUP1c >>252
そんな感じでおk。var vs. const や == vs. === 等は
ポストプロセスとの相性があるだろうから試してくれ。
useの定義だけ単品のファイルにしてtsconfig.jsonで切り替えると良いかも。
もちろんtscの後に実行する。やり方はビルドツール次第。
デバッグ中はminifyされると面倒だから、リリース時だけ使うといい。
そんな感じでおk。var vs. const や == vs. === 等は
ポストプロセスとの相性があるだろうから試してくれ。
useの定義だけ単品のファイルにしてtsconfig.jsonで切り替えると良いかも。
もちろんtscの後に実行する。やり方はビルドツール次第。
デバッグ中はminifyされると面倒だから、リリース時だけ使うといい。
254デフォルトの名無しさん
2016/03/09(水) 20:12:15.23ID:YZujmLFz255デフォルトの名無しさん
2016/03/09(水) 20:52:59.74ID:YZujmLFz 関数のオーバーロードは、
function f(x: number):void;
function f(x: string): void;
function f(x: any): void {
...
}
とやるようですが、引数を取らない同名の関数も一緒に定義したいのですが、
function f():void;
これを上の定義に追加するとエラーします。
どうすれば良いですか?
function f(x: number):void;
function f(x: string): void;
function f(x: any): void {
...
}
とやるようですが、引数を取らない同名の関数も一緒に定義したいのですが、
function f():void;
これを上の定義に追加するとエラーします。
どうすれば良いですか?
256デフォルトの名無しさん
2016/03/09(水) 21:30:41.53ID:0Gq8vrNb257デフォルトの名無しさん
2016/03/09(水) 21:32:56.87ID:0Gq8vrNb 古い書き方でやりたい場合は
function f(x?: number):void;
function f(x?: string): void;
function f(x?: any): void {
で出来る
function f(x?: number):void;
function f(x?: string): void;
function f(x?: any): void {
で出来る
258デフォルトの名無しさん
2016/03/10(木) 10:54:45.09ID:z40A+Y3k >>256>>257
うまくいったわ。ありがとう。
もう一つ教えて。Visual StudioでTypeScript勉強中なのだが、
function f(){
...
return ;
...
}
とreturn入れると、
Unreachable code detected.
のエラーになってしまう。
JavaScriptなら警告だけなのに。
エラーになると実行出来ないのだが、対策ありますか?
うまくいったわ。ありがとう。
もう一つ教えて。Visual StudioでTypeScript勉強中なのだが、
function f(){
...
return ;
...
}
とreturn入れると、
Unreachable code detected.
のエラーになってしまう。
JavaScriptなら警告だけなのに。
エラーになると実行出来ないのだが、対策ありますか?
259デフォルトの名無しさん
2016/03/10(木) 11:13:40.34ID:la5WEUke >>258
--allowUnreachableCode
tsconfig.json に書くなら "allowUnreachableCode": true
テスト用の一時的変更でない限り、高確率でバグだろうからな
--allowUnreachableCode
tsconfig.json に書くなら "allowUnreachableCode": true
テスト用の一時的変更でない限り、高確率でバグだろうからな
260デフォルトの名無しさん
2016/03/10(木) 13:16:14.83ID:z40A+Y3k >>259
レスありがとうございます。
ググったらVS2013ではtsconfig.jsonが使えない?
ようなんですが、どうにかして
allowUnreachableCode を有効化する方法ありますか?
レスありがとうございます。
ググったらVS2013ではtsconfig.jsonが使えない?
ようなんですが、どうにかして
allowUnreachableCode を有効化する方法ありますか?
261デフォルトの名無しさん
2016/03/14(月) 07:46:17.33ID:CkOIJo3B JavaScriptの10個くらいのファイルがあり、それをTypeScript化したいのです。
全部のファイルで、同じmodule名で囲ったら、互いに変数や関数を参照出来ると思ったのですが、出来ませんでした。
TypeScriptではC#で言うところのPartial Classみたいにする方法ありますか?
全部のファイルで、同じmodule名で囲ったら、互いに変数や関数を参照出来ると思ったのですが、出来ませんでした。
TypeScriptではC#で言うところのPartial Classみたいにする方法ありますか?
262デフォルトの名無しさん
2016/03/14(月) 08:26:19.76ID:rt0F/u0o >>261
module/namespaceのexportしてないオブジェクトはローカル変数になるからできないね。
他のファイルから使いたいならexportするしかない。外部に公開されちゃうけど。
Partial Classについては、インスタンスなりprototypeなりに関数を代入すれば
似たようなことはできるけど、thisやsuperが扱えないかもしれないな。
インタフェースと declare var の組み合わせは代わりになるだろうか? lib.d.tsを参考に。
module/namespaceのexportしてないオブジェクトはローカル変数になるからできないね。
他のファイルから使いたいならexportするしかない。外部に公開されちゃうけど。
Partial Classについては、インスタンスなりprototypeなりに関数を代入すれば
似たようなことはできるけど、thisやsuperが扱えないかもしれないな。
インタフェースと declare var の組み合わせは代わりになるだろうか? lib.d.tsを参考に。
263デフォルトの名無しさん
2016/03/14(月) 10:05:23.83ID:WJ0CXY/9 JavaScriptの方で擬似的に名前空間化されていないものに
後からnamespaceで囲う必要はないと思う
partial classは実行時に実現できたとしてもclass内部の型定義が不完全になるでしょ
interfaceはいくつでも同名で定義できるので、全てpartialのようなもの
後からnamespaceで囲う必要はないと思う
partial classは実行時に実現できたとしてもclass内部の型定義が不完全になるでしょ
interfaceはいくつでも同名で定義できるので、全てpartialのようなもの
264デフォルトの名無しさん
2016/03/14(月) 14:40:23.18ID:CkOIJo3B >>262 >>263
詳しい説明ありがとうございました。
>JavaScriptの方で擬似的に名前空間化されていないものに
>後からnamespaceで囲う必要はないと思う
JSのファイルは全部で50個くらいあり、
全部をTS化したいのです。
それで、取りあえず、ある特定の機能に関連している10ファイルを一つにしたくて、
同じmodule名で囲ってみました。
結局、その10ファイルの中でも互いに利用する関数はそれぞれexportして互いに利用し、
一方グローバル変数は一つのTSファイルに集めてそれらを全部exportして10個のTSや、他のJSファイルの中で利用しました。
こういう方針でやるのは、正統的ではないですか?
正しい手法があれば教えて下さい。
詳しい説明ありがとうございました。
>JavaScriptの方で擬似的に名前空間化されていないものに
>後からnamespaceで囲う必要はないと思う
JSのファイルは全部で50個くらいあり、
全部をTS化したいのです。
それで、取りあえず、ある特定の機能に関連している10ファイルを一つにしたくて、
同じmodule名で囲ってみました。
結局、その10ファイルの中でも互いに利用する関数はそれぞれexportして互いに利用し、
一方グローバル変数は一つのTSファイルに集めてそれらを全部exportして10個のTSや、他のJSファイルの中で利用しました。
こういう方針でやるのは、正統的ではないですか?
正しい手法があれば教えて下さい。
265デフォルトの名無しさん
2016/03/14(月) 15:30:12.67ID:rt0F/u0o たまたま見つけてタイムリーだったので張っておく。現実装に依存しすぎだとは思うが。
> TypeScriptのクラスをnamespaceで拡張する
ttp://qiita.com/ConquestArrow/items/5d885128f896844698dd
複数ファイルから成る出力全体をモジュールで包む機能って無いんだっけ?
単に function() { ... } で囲んでくれるだけで良いんだけれど。
モジュール内部の各所では使うものの、外部からアクセスする必要のないものはローカル化したい。
> TypeScriptのクラスをnamespaceで拡張する
ttp://qiita.com/ConquestArrow/items/5d885128f896844698dd
複数ファイルから成る出力全体をモジュールで包む機能って無いんだっけ?
単に function() { ... } で囲んでくれるだけで良いんだけれど。
モジュール内部の各所では使うものの、外部からアクセスする必要のないものはローカル化したい。
266デフォルトの名無しさん
2016/03/14(月) 15:55:47.88ID:sQIOa7FM 最近はもうnamespaceを使うのはお勧め出来ないな。ES6の機能にないし
https://blogs.msdn.microsoft.com/typescript/2016/02/22/announcing-typescript-1-8-2/
この最初に書いてある方法がclassを拡張するには今時の方法なんじゃないかな?
ES6のmoduleは1ファイル1モジュールな感じだから全部のファイルを特定のモジュール名で括るという
考えは捨てるべきだと思われる
メインのファイルがそのほかを全部importして必要なものをexportするべきだろうね
https://blogs.msdn.microsoft.com/typescript/2016/02/22/announcing-typescript-1-8-2/
この最初に書いてある方法がclassを拡張するには今時の方法なんじゃないかな?
ES6のmoduleは1ファイル1モジュールな感じだから全部のファイルを特定のモジュール名で括るという
考えは捨てるべきだと思われる
メインのファイルがそのほかを全部importして必要なものをexportするべきだろうね
267デフォルトの名無しさん
2016/03/14(月) 22:56:12.42ID:CkOIJo3B268デフォルトの名無しさん
2016/03/15(火) 19:08:51.76ID:oaSHh/yi269デフォルトの名無しさん
2016/03/15(火) 20:09:42.73ID:9cVBtkdm どうでもいい
270デフォルトの名無しさん
2016/03/16(水) 00:53:23.89ID:dOYh+a0T どうでも良くない
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- 地球から無限km先の場所ってどうなっているの?
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- 日本、高市のお陰で破滅に近づくwwwwwwww
- AIアーティストだけど作品公開する
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
