TypeScript part2at TECH
TypeScript part2 - 暇つぶし2ch255:デフォルトの名無しさん
16/03/05 12:33:38.03 jb1F0oyu.net
>>244
typingsを使うときに勝手に再帰的に取りに行ってくれるオプションとか無いですかね。
今は諦めて、俺俺d.tsファイルに空のinterface作って対応してます。

256:デフォルトの名無しさん
16/03/05 14:42:35.70 GXDl5hqY.net
>>245
JSON2HTMLというか、TSからHTMLを生成すると自然なんだろうか?
デザイン担当との兼ね合いで、


257:そう勝手にはいかないだろうけれど。 >>246 「コンパイルが通らなかったのでキャストを追加しました」 的な危うさを感じるな……まぁ好きにしなされ。



258:デフォルトの名無しさん
16/03/05 15:53:12.74 JVykV3V4.net
とりあえずAngular2+TypeScriptを使えば全てが丸く収まる(はず)

259:デフォルトの名無しさん
16/03/09 02:26:14.01 YWG9oDIr.net
>>224
TypeScript 1.8はモジュール拡張のサポートを提供する
URLリンク(www.infoq.com)

260:デフォルトの名無しさん
16/03/09 13:38:59.08 YZujmLFz.net
C,C++などの
#ifdef ABC
#endif
みたない構文はありますか?

261:デフォルトの名無しさん
16/03/09 13:55:35.24 wC8YUP1c.net
>>250
ない。
もし不要なコードの排除が目的なら、単にif文を使っておいて、
出力した .js に Closure Compiler 等の最適化を行うポストプロセスすると
最終的な .min.js からは無駄なコードを消してくれる場合もある。

262:デフォルトの名無しさん
16/03/09 14:19:18.40 YZujmLFz.net
>>251
なるほど。
でも、さっそく
if(false){
...  // 不要なコード
}
としてみたら、
Unreachable code detected.
と出ました。
var use= false;
if (use == true) {
...  // 不要なコード
}
で行けました。こんなやり方おかしいですか?
Closure Compiler はビルド後に実行するコマンドでやるのでしょうか?

263:デフォルトの名無しさん
16/03/09 15:24:10.02 wC8YUP1c.net
>>252
そんな感じでおk。var vs. const や == vs. === 等は
ポストプロセスとの相性があるだろうから試してくれ。
useの定義だけ単品のファイルにしてtsconfig.jsonで切り替えると良いかも。
もちろんtscの後に実行する。やり方はビルドツール次第。
デバッグ中はminifyされると面倒だから、リリース時だけ使うといい。

264:デフォルトの名無しさん
16/03/09 20:12:15.23 YZujmLFz.net
>>253
サンキュウ。
君詳しいな。また教えてくれよ。

265:デフォルトの名無しさん
16/03/09 20:52:59.74 YZujmLFz.net
関数のオーバーロードは、
function f(x: number):void;
function f(x: string): void;
function f(x: any): void {
...
}
とやるようですが、引数を取らない同名の関数も一緒に定義したいのですが、
function f():void;
これを上の定義に追加するとエラーします。
どうすれば良いですか?

266:デフォルトの名無しさん
16/03/09 21:30:41.53 0Gq8vrNb.net
>>255
それ古い書き方。今時は
function f(x?: number | string): void { }
と書く

267:デフォルトの名無しさん
16/03/09 21:32:56.87 0Gq8vrNb.net
古い書き方でやりたい場合は
function f(x?: number):void;
function f(x?: string): void;
function f(x?: any): void {
で出来る

268:デフォルトの名無しさん
16/03/10 10:54:45.09 z40A+Y3k.net
>>256>>257
うまくいったわ。ありがとう。
もう一つ教えて。Visual StudioでTypeScript勉強中なのだが、
function f(){
   ...
   return ;
   ...
}
とreturn入れると、
Unreachable code detected.
のエラーになってしまう。
JavaScriptなら警告だけなのに。
エラーになると実行出来ないのだが、対策ありますか?

269:デフォルトの名無しさん
16/03/10 11:13:40.34 la5WEUke.net
>>258
--allowUnreachableCode
tsconfig.json に書くなら "allowUnreachableCode": true
テスト用の一時的変更でない限り、高確率でバグだろうからな

270:デフォルトの名無しさん
16/03/10 13:16:14.83 z40A+Y3k.net
>>259
レスありがとうございます。
ググったらVS2013ではtsconfig.jsonが使えない?
ようなんですが、どうにかして
allowUnreachableCode を有効化する方法ありますか?

271:デフォルトの名無しさん
16/03/14 07:46:17.33 CkOIJo3B.net
JavaScriptの10個くらいのファイルがあり、それをTypeScript化したいのです。
全部のファイルで、同じmodule名で囲ったら、互いに変数や関数を参照出来ると思ったのですが、出来ませんでした。
TypeScriptではC#で言うところのPartial Classみたいにする方法ありますか?

272:デフォルトの名無しさん
16/03/14 08:26:1


273:9.76 ID:rt0F/u0o.net



274:デフォルトの名無しさん
16/03/14 10:05:23.83 WJ0CXY/9.net
JavaScriptの方で擬似的に名前空間化されていないものに
後からnamespaceで囲う必要はないと思う
partial classは実行時に実現できたとしてもclass内部の型定義が不完全になるでしょ
interfaceはいくつでも同名で定義できるので、全てpartialのようなもの

275:デフォルトの名無しさん
16/03/14 14:40:23.18 CkOIJo3B.net
>>262 >>263
詳しい説明ありがとうございました。
>JavaScriptの方で擬似的に名前空間化されていないものに
>後からnamespaceで囲う必要はないと思う
JSのファイルは全部で50個くらいあり、
全部をTS化したいのです。
それで、取りあえず、ある特定の機能に関連している10ファイルを一つにしたくて、
同じmodule名で囲ってみました。
結局、その10ファイルの中でも互いに利用する関数はそれぞれexportして互いに利用し、
一方グローバル変数は一つのTSファイルに集めてそれらを全部exportして10個のTSや、他のJSファイルの中で利用しました。
こういう方針でやるのは、正統的ではないですか?
正しい手法があれば教えて下さい。

276:デフォルトの名無しさん
16/03/14 15:30:12.67 rt0F/u0o.net
たまたま見つけてタイムリーだったので張っておく。現実装に依存しすぎだとは思うが。
> TypeScriptのクラスをnamespaceで拡張する
URLリンク(qiita.com)
複数ファイルから成る出力全体をモジュールで包む機能って無いんだっけ?
単に function() { ... } で囲んでくれるだけで良いんだけれど。
モジュール内部の各所では使うものの、外部からアクセスする必要のないものはローカル化したい。

277:デフォルトの名無しさん
16/03/14 15:55:47.88 sQIOa7FM.net
最近はもうnamespaceを使うのはお勧め出来ないな。ES6の機能にないし
URLリンク(blogs.msdn.microsoft.com)
この最初に書いてある方法がclassを拡張するには今時の方法なんじゃないかな?
ES6のmoduleは1ファイル1モジュールな感じだから全部のファイルを特定のモジュール名で括るという
考えは捨てるべきだと思われる
メインのファイルがそのほかを全部importして必要なものをexportするべきだろうね

278:デフォルトの名無しさん
16/03/14 22:56:12.42 CkOIJo3B.net
>>266
教えて貰ったリンク先見ても良く分かりません。
もう少し分かり易い例はどこかに無いでしょうか?

279:デフォルトの名無しさん
16/03/15 19:08:51.76 oaSHh/yi.net
>>265
classの中にnamespaceと言うのが
違和感有ります。皆さんはどうですか?

280:デフォルトの名無しさん
16/03/15 20:09:42.73 9cVBtkdm.net
どうでもいい

281:デフォルトの名無しさん
16/03/16 00:53:23.89 dOYh+a0T.net
どうでも良くない

282:デフォルトの名無しさん
16/03/16 01:11:40.10 Tb17X3fe.net
typeScriptと相性かいいフレームワークってどんなのがあります。?
vue.jsと比べるとreactはかなり良さ気なんですが

283:デフォルトの名無しさん
16/03/16 13:03:38.46 /Zyxq7hl.net
Angular2かな
まだベータ版だけどTypeScriptとの親和性は抜群というかAngular2自体がTypeScriptで作られてる
だから*.d.tsが要らない
あと最終的にはテンプレート文字列内まで補完が効くようになるらしい

284:デフォルトの名無しさん
16/03/17 02:25:53.34 ybZd+XDK.net
namespaceとmoduleの違いが分かりません。
ほとんど同じようなものだと思ってもいいですか?

285:デフォルトの名無しさん
16/03/17 09:53:47.06 U5XyTqUO.net
>>272
googleとmsの共同作品みたいなものですね。
reactと比較してのメリットはフルスタックなところですね�


286:[。 facebookもflowとか独自にやらずにtypeScript使ってくれればいいのに。 デメリットは学習コストなんですよねー。正直angular1で挫折したので、、、、 typeScript作のフレームワークとかライブラリって他に何がありますかねー?



287:デフォルトの名無しさん
16/03/17 10:41:50.84 FCgg2gkL.net
>>273
最初はmoduleしかなかったがTypeScriptのmoduleはJavaScript界隈のモジュールと
違ってnamespaceに近いものだから、後からmoduleの別名でnamespaceが追加された
要するに全く同じもの
そしてmoduleはobsoleteな感じだったが、1.8でまた蒸し返された感じだな

288:デフォルトの名無しさん
16/03/17 10:48:46.56 ybZd+XDK.net
>>275
解説ありがとうございました。スッキリしました。
>1.8でまた蒸し返された感じだな
なぜそんなに迷走しているのですか?

289:デフォルトの名無しさん
16/03/17 11:30:44.99 FCgg2gkL.net
>>276
言い方がまずかったかもしれん…迷走ではない
Ambient Modulesと呼ばれている機能が少し拡張されただけだ
moduleと1.8で拡張されたdeclare moduleは似てはいるが別モンと考えた方が良かったな
ただのmoduleはnamespaceに置き換えた方が誤解が少なくていいと思うが
declare moduleはモジュール定義を書くものだから必要なものだった

290:デフォルトの名無しさん
16/03/17 14:17:48.80 LtlKgYTa.net
playgroundから補完効くの気持ちいいんですけど、
外部ライブラリも取り込めるタイプのやつって無いですかね?

291:デフォルトの名無しさん
16/03/17 19:50:11.64 ybZd+XDK.net
URLリンク(stackoverflow.com)
にある例
interface Array<T> {
  remove(o: T): Array<T>;
}
Array.prototype.remove = function (o) {
  // code to remove "o"
  return this;
}
のようにして配列に対してremoveというのを追加したいのですが、実際にやると
Property 'remove' does not exist on type 'any[]'
と出ます。何がおかしいでしょうか?
VS2015のTypeScriptです。

292:デフォルトの名無しさん
16/03/17 21:18:45.36 FCgg2gkL.net
>>279
呼び出してるとこも書かないとそれだけじゃ分からん

293:デフォルトの名無しさん
16/03/17 23:01:06.58 ybZd+XDK.net
>>280
呼び出す以前に、
Array.prototype.remove = function (o) {
        ^^^^^
このremoveの部分で上記のエラーメッセージが出ます。
もし理由や対策が分かれば教えて下さい。

294:デフォルトの名無しさん
16/03/17 23:19:57.85 2Htg2ogu.net
>>281
Playgroundなら動くように見えるが、これでいいのか?
URLリンク(tiny.cc)
tscのバージョンとかビルドオプションにも関係するかもしれない。
型チェックを厳しくすると文句を言われる気がする。
その場合は any にキャストして黙らせるんだろうけど。

295:デフォルトの名無しさん
16/03/18 01:21:57.61 xSPdqn8L.net
>>282
サンプルありがとうございます。
何故かVSだとエラーするんですよね。

296:デフォルトの名無しさん
16/03/18 08:30:08.17 lH6dzSdk.net
>>283
君は基本的な姿勢が身についていない
・質問をする場合は、再現可能なコード片を添付せよ
・エラーを特定し、メッセージを加工せずに報告せよ
>>279 だけ見ると、使用時にエラーがあるように読めるが
>>281 では、実装時にエラーがあるように読める(エラー内容は不明)
こんなことでは他人の手を煩わせるだけだ

297:デフォルトの名無しさん
16/03/18 09:44:04.92 UW/nCw4W.net
>>279
そのインターフェースが他のソースから見える状態じゃないとエラーになるし
prototypeへの実装も他のコードよりも先に行われないと実行時エラー
そのメッセージだと前者のようだけどな

298:デフォルトの名無しさん
16/03/18 13:56:17.03 +/FU+lPG.net
>>274
フレームワークと言えばUWP(ユニバーサルWindowsプラットフォーム)もあるな
TypeScriptでUWPを作るのは情報が少ないけど同じMSだから手厚いサポートがあるはず

299:デフォルトの名無しさん
16/03/19 10:14:16.49 iKSB+QiN.net
>>286
JavaScript/HTMLでUWP作れるから問題は無いんじゃない?
(UWPが流行るかはともかく)
VS2015ではまだプロジェクトテンプレートが無いけど、次期版には追加されるでしょ

300:デフォルトの名無しさん
16/03/19 12:41:33.04 MNmjmgAA.net
>>287
UWPってqiitaを観た感じはやっていていないけど、
UIをXMLっぽくつくりこめるってやつならReactNativeでいい気がする。

301:デフォルトの名無しさん
16/03/21 08:15:39.14 O7DG3syI.net
typeScriptでVSCのextension作りたいんですけど
動作の挙動を見るのに既存のextensionをデバッガで動かしています。
でもVSC自体がそのextensionを使っているとバッティングして上手く動かないので
別プロファイルみたいにして動かしたいんです。
でも、そういう起動オプションが見つからなくて困っています。
お助け下さい。

302:デフォルトの名無しさん
16/03/22 00:21:22.49 uAieVvDE.net
typeScriptのOptional型ってswiftのそれとは全然違うような。
interfaceのメンバにしか?使えないの?
返却値もoptional使いたい

303:デフォルトの名無しさん
16/03/22 01:42:45.61 gYAdXehO.net
>>290
Swiftとは違うね。単に省略を許すだけ。
TypeScriptではすべての変数がOptional型といえる。
numberを返すと宣言した関数からでも、nullとundefinedは返せてしまう。
ロードマップにある 2.0 Non-nullable types が導入されればマシになるとは思う。

304:デフォルトの名無しさん
16/03/22 13:37:01.50 r8fC7r2k.net
--strictNullChecks 一発でデフォがNon-nullableになるのは助かる
--noImplicitAny --noImplicitReturns と必須オプションがまた増えたな

305:デフォルトの名無しさん
16/03/22 17:31:59.65 DpQ/EBxZ.net
nullやundefinedを許していない状況で
省略可能引数にnullチェックが必要になるのは少し変な気がするから使わなさそう

306:デフォルトの名無しさん
16/03/22 17:40:46.01 uAieVvDE.net
>>292
なるほどオプションで有効になる感じですね。
早く試してみたいです。
でも外部ライブラリとの整合性をどうするのか気になります。
swiftだと!がついているImplicitly Unwrapped Optional型とかいうのになって
明確に危険な型だと分かるようにしてますけど、typeScriptも似たようなものになるんでしょうか?

307:デフォルトの名無しさん
16/03/22 18:03:22.23 gYAdXehO.net
フロー解析をするようになってきているから
use(x) はエラーになって
if (x != null) { use(x) } はエラーにならない
くらいのことをやってくれるはず。Swiftの!型に対応するものは要らない。

308:デフォルトの名無しさん
16/03/22 21:46:36.58 r8fC7r2k.net
>>293
hoge?: number, じゃなくて hoge = 0, とかにすれば別にnullチェック要らないじゃん
で、
interface {
 hoge?: number

function func(hoge?: number)

両方共nullableかつ省略可能で hoge: number? だと省略不可でnullableと考えると
一貫していて結構いいじゃない

309:デフォルトの名無しさん
16/03/22 21:49:41.79 r8fC7r2k.net
let hoge: number?;
とletの場合は省略するという考えがないからnumber?でnullableということだな

310:デフォルトの名無しさん
16/03/22 21:53:50.90 uAieVvDE.net
>>295
ありがとうございますちなみにそのフロー解析はドコまでやってくれるんでしょうか?
例えばtypeScript上で書いたFuncAがあって
let a= FuncA()
use(a)
みたいにFuncAの中で返却値がnullチェックされていれば
上記のようにnullチェック無しで使えるんでしょうか?

311:デフォルトの名無しさん
16/03/22 22:18:13.97 gYAdXehO.net
>>298
まだリリースはされていないからわからないよ。期待はしているけど。
その例なら function FuncA(): Foo? か : Foo か、関数の返値の宣言を見るのが自然じゃない?
FuncAの実装の中まで追うことはないだろうし、するべきではないとさえ思う。
それにしても、省略可能な引数の書き方ってどうなるんだろう?
function func(hoge?: number?) ← 厳密だが、?を2個も書くの?
function func(hoge?: number) ← 言葉通りだとnon-nullableなのにundefinedになりうる?
function func(hoge: number?) ← nullは渡せるが省略できない?

312:デフォルトの名無しさん
16/03/22 22:43:28.85 BfQhAJB6.net
皆さんどういう環境でtypescriptやっているのですか?
winのvisual studioは少数派かな?

313:デフォルトの名無しさん
16/03/23 11:41:36.25 oLR8GLsF.net
引数が省略されたかどうかを調べるための構文がないと不自然だな
hoge == nullみたいに使わないはずのキーワードが出てくるのはやっぱり変

314:デフォルトの名無しさん
16/03/23 13:40:01.83 s9X+rvra.net
>>301
だからNon-nullableがデフォだからって絶対nullが出てこないわけじゃないでしょ
DOMだのWebAPIは普通にnullを返すし自前の関数だってnullとかundefinedを返したいことは普通にある
それと引き数の省略には func(hoge = -1) とかにすればいいんだよ

315:デフォルトの名無しさん
16/03/23 14:26:23.62 2mxU+x1U.net
URLリンク(qiita.com)
上記記事でtypeScriptディスられているんですが、
> 最近のTypeScript は動作環境のロックインが多くなりつつあり、またコンパイル後のJSはedgeで動くからこれでいいんだ、というMSの姿勢が若干透けて見えて、ちょっと距離を置きたい気分です。
というのは本当なんでしょうか?
具体的にどういうものがあるのか知りたいです。

316:デフォルトの名無しさん
16/03/23 15:06:32.16 0dLy2K+b.net
jsあるいはtsに
nullとundefinedが有りますが、nullだけで十分だと思うんですが皆さんそう思わない?

317:デフォルトの名無しさん
16/03/23 16:16:09.46 +D1Yzwu/.net
>>303
っ「要出典」
es5モードならほとんどのブラウザで動くし、es6だとEdgeでさえ動かない。node用。
一時期 async/await を強く推していて、.NET系言語、ES、Python にまで採用させた
(良く言えば、開発に協力した)のは、煙たがられていた印象はある。

318:デフォルトの名無しさん
16/03/23 16:20:06.05 s9X+rvra.net
機能的にundefinedで名前がnullのが1つあればよかった
nullはJavaScriptの癌と言える
TypeScriptのコーディングスタイルにもnullは使うなと書いてあるし
tslintでも警告を出せるからnullはもう使わないようにすべき

319:デフォルトの名無しさん
16/03/23 16:42:09.62 +D1Yzwu/.net
>>304
JSだとさらに「undefinedを保持」と「未定義」の区別がある場合も。
「不在」と「不明」は別という考え方もあったが、結局、一般人には使いこなせなかったんだろう。
ちなみにLuaはnilしかなく、nilを代入するとJSのdelete演算子になるんだが、
「保持できるnil」(キーとしては残る)のためにnullが欲しいという話もたまに出る。
何が最良かは難しいところだな。

320:デフォルトの名無しさん
16/03/23 16:55:04.92 4qmKzsXk.net
return 'undefined';

321:デフォルトの名無しさん
16/03/23 17:35:37.11 2mxU+x1U.net
interface A {
a:string
}
interface B {
b:string
}
interface C {
c:string
}
type Hoge = A|B|C

すいません。上記のような


322:Hoge型があったとして Hoge型をA,B,Cの何れかのinterfaceに合致するかテストする方法ってどうすればいいんでしょうか? できれば各interfaceのメンバに触れずに確認したいのですが、、、、



323:デフォルトの名無しさん
16/03/23 23:04:51.01 +D1Yzwu/.net
>>309
無理でしょう。TypeScriptのinterfaceはコンパイル後には何の痕跡も残らない。
実行時にはinterface由来の型情報は使えない。

324:デフォルトの名無しさん
16/03/24 14:14:40.73 v9bzQn8L.net
TypeScriptはコンパイル時にはinterfaceを認識してるはずだが
コードでそれをチェックする術がないな (今後も追加される事は絶対ないだろうが)
しかしinterfaceのどれかに合致するかっていう考え方ちょっと違うな
例えば
interface A {
 a:number
}
interface B {
 b:string
}
があれば
{
 a:1,
 b:


325:"hoge" } はどっちにも合致する訳だから、コンパイルが通ればどれか(または両方)のinterfaceに合致してる と判別が出来るってだけのものだよ



326:デフォルトの名無しさん
16/03/24 17:51:19.94 QUxdzUzn.net
chromeでデバッグできますか?

327:デフォルトの名無しさん
16/03/24 18:45:20.46 bRX025wQ.net
>>312
.js にコンパイルするときに Source Map を出力できる。
それ以上のデバッグについては開発環境スレでどうぞ。

328:デフォルトの名無しさん
16/03/25 02:00:24.75 G+z1ebGz.net
>>312
weboack使ってるけどなんの問題もなくtsファイルにbreakpointが貼れる

329:デフォルトの名無しさん
16/03/25 02:00:53.64 G+z1ebGz.net
>>314
webpackです。typo

330:デフォルトの名無しさん
16/03/25 12:36:24.15 Ib2txsDS.net
>>314
iisサーバーは?

331:デフォルトの名無しさん
16/03/27 23:00:49.72 FjCKG/3R.net
typeScriptでWeakMapっていつから使えるようになるんですか?
ES2015から使えるものっててっきりtypeScriptでもつかえるものかと

332:デフォルトの名無しさん
16/03/28 14:50:43.22 6ufq8Y0K.net
--target ES6にすれば使えるっていうかそれぐらい察しろ

333:デフォルトの名無しさん
16/03/28 19:56:00.22 YM89lTlN.net
>>318
えっ。それっておかしくないです?
typeScriptって基本 ES2015 + 型なのかと。
アロー関数は標準でサポートしといてWeakMapは対象外ってどういうことなの

334:デフォルトの名無しさん
16/03/28 21:20:10.15 K6EkYblL.net
>>319
構文糖で対応できる機能は対応している
JavaScriptエンジンが対応してくれないとどうしようもない機能は無理
それぐらい察しろ

335:デフォルトの名無しさん
16/03/29 00:12:34.26 clo72TFv.net
>>320
なるほど。てっきりtargetって出力するjsコードの対応バージョンでしかなくて、
typeScriptの仕様自体はどのtargetでも変化しないと思い込んでました。
つまりES2015のpolyfillの役割も果たしてくれるとばかり思っていました。
ありがとうございます。

336:デフォルトの名無しさん
16/03/29 10:54:45.27 NGEgZfA0.net
>>321
基本TypeScriptはES2015のpolifillだと思っていいけど
単に少ないコードで実装出来るものしか対応してないだけだ
__extendsとか__decorateとかね
2.0でasync/awaitもES5で使えるようになるけど、もしWeakMapを対応したら
巨大なコードが*.jsの頭に引っ付くことになるけどそんなの嫌だろ

337:デフォルトの名無しさん
16/04/05 23:45:55.11 nWoaZGhX.net
JavaのNashornにrequire関数組み込んでTypeScript使えるようにしたが結構楽しいわ
letの暗黙リネームが実行時に何か不具合起こすんじゃないかと少々気になる

338:デフォルトの名無しさん
16/04/06 20:01:43.86 NydnT1H+.net
>>323
letが導入されてから1.8になるまでforループ内でlet使うと特定の条件で実行時エラーを起こしてた
1.8で修正されたから古いバージョンの場合は気を付けた方がいいけど1.8以降は不具合なんて起こさないはず

339:デフォルトの名無しさん
16/04/11 23:59:54.54 /4tKcoWK.net
typescript初心者です。
Visual Studioで、
module mod {
function func() {
alert('func');
}
}
が、
var mod;
(function (mod) {
function func() {
alert('func');
}
})(mod || (mod = {}));
になるのですが、分からないのは、
(mod || (mod = {}));
の部分です。
これは何でしょうか?
どなたか解説お願いいたします。あるいはヒントなどお教えください。

340:デフォルトの名無しさん
16/04/12 00:19:14.57 ep3rTpAI.net
>>325
mod 変数が定義済みなら再利用 or 無ければ新規の空オブジェクトを使う。
複数の場所で mod モジュールが定義される場合に、内容をマージすることになる。

341:デフォルトの名無しさん
16/04/12 00:20:23.42 L6C4Yo9J.net
(A || B)はAもしくはBが偽じゃなければその内容(結果)を返す特性があって



342:単純に言うとmodが空ならオブジェクト代入して無名関数に渡すよってこと



343:デフォルトの名無しさん
16/04/12 00:47:40.67 X3YsmN+g.net
>>326 >>327
解説ありがとうございました。だいぶ分かってきました。
もう一つ教えて下さい。
二つのtsファイル
----------------
// file1.ts
module mod {
  function func1() {
    alert('func1');
  }
}
----------------
// file2.ts
module mod {
  function func2() {
    alert('func2');
  }
}
----------------

344:デフォルトの名無しさん
16/04/12 00:48:40.40 X3YsmN+g.net
から生成される二つのjsファイルを単純に連結して一つのファイルにします。
----------------
var mod;
(function (mod) {
  function func1() {
    alert('func1');
  }
})(mod || (mod = {}));
var mod;
(function (mod) {
  function func2() {
    alert('func2');
  }
})(mod || (mod = {}));
----------------
こういう単純な例だと問題は無かったのですが、実際の状況では連結したJSの実行時にエラーする場合がありました。
少し調べた限りでは、エラーの有無はJSファイルを連結する順番に依存するようなのですが、そういう事はありますか?
やりたいのは、複数のJSファイルをmoduleで囲ってTS化して、そうやって出来上がったJSファイルを一つのファイルに連結したいのですが、エラーが出て行き詰っています。
こういうやり方は間違いですか?

345:デフォルトの名無しさん
16/04/12 10:30:36.29 ep3rTpAI.net
>>329
連結する順番でエラーになることはある。
特にグローバルスコープ(関数の外)で処理が走る場合かな?
tslint を入れて no-use-before-declare (宣言前に使うと警告) で
チェックする手はあるかもしれない。

346:デフォルトの名無しさん
16/04/12 12:30:46.37 MBVppC7j.net
>>330
情報ありがとうございました。
調べてみます。

347:デフォルトの名無しさん
16/04/12 21:56:30.51 aXmXxCLh.net
TypeScript 2.0プレビュー
URLリンク(www.infoq.com)

348:デフォルトの名無しさん
16/04/13 16:45:42.60 xgAfpouO.net
おおって思ってchannel9の動画見てみたらマイクロソフトの人が未だにtsd
使ってデモしてたんだけどtsd非推奨じゃなかったんかい

349:デフォルトの名無しさん
16/04/13 16:56:49.53 xgAfpouO.net
面白いねTypeScript2.0
undefinedとnullはそれぞれ独立した型になって
let a: number|null|undefined
みたいに宣言するようになるのか

350:デフォルトの名無しさん
16/04/13 22:27:08.77 JKiuLOht.net
voidでよくね

351:デフォルトの名無しさん
16/04/14 12:17:58.56 ea0e/BMW.net
C#のvirtual,overrideも実装してくれよ
issueには何度かあがってるけどその度に否定されてんだよな、何でだ

352:デフォルトの名無しさん
16/05/01 13:04:39.03 tKi6j9CT.net
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
URLリンク(twitter.com)
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw

The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は


353:少なくなります) 検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません 4



354:デフォルトの名無しさん
16/05/01 20:44:35.23 sHMevs8d.net
Visual Studio Comm. 2015でTypeScript 1.7.4.0を使ってます。
プロジェクトをビルドしてデバッグしても変更が反映されなくなりました。
仕方なく新しいプロジェクトを作ってソースを移動させているのですが、対処法はありますか?

355:デフォルトの名無しさん
16/05/01 21:13:58.28 1U34S4Ix.net
>>338
>変更が反映されなくなりました。
何の変更がどこに反映されないん?
tsからjsが自動生成されないと言う意味?
もしそうならtsに文法エラーが有るんじゃないか?

356:デフォルトの名無しさん
16/05/02 10:47:24.02 H1b5QbBD.net
レスありがとうございます。こんなに早く反応があるとは思いませんでした。見逃してしまって申し訳ないです。
>何の変更がどこに反映されないのか
ソースコードの変更です。
ビルドして実行してもjsが前回のビルドのままで困っていました。
>tsからjsが自動生成されないと言う意味?
>もしそうならtsに文法エラーが有るんじゃないか?
仰る通り文法エラーがあったみたいです。今では正常に実行できています。ご迷惑をおかけしました。
それにしても間違ったコードを書いてもビルドエラーにはならないんですね……。
これではどこでミスったかチェックしにくい。

357:デフォルトの名無しさん
16/05/02 16:08:44.94 WvgoLY0A.net
「新しいプロジェクトを作ってソースを移動させ」たらうまくいくのだがという話じゃなかったのか

358:デフォルトの名無しさん
16/05/03 07:37:48.31 llYnk/DC.net
「新しいプロジェクトを作ってソースを移動させたらうまくいく」ケースは俺も何度か経験したことがあるなぁ
しかも>>338と違ってコンパイルエラーは発生していない
ビルドして実行してもjsが前回のビルドのままってところまでは一致してるんだよな
(そもそもビルドできないのだが)

359:デフォルトの名無しさん
16/05/09 17:02:14.42 pzKdLl0R.net
Visual Studio2015で二つのTSのプロジェクトがあり、
Proj1
 typescrpt1.ts
 commonA.ts
 commonB.ts
Proj2
 typescrpt2.ts
 commonA.ts
 commonB.ts
両者で共通のtsファイルが二つあるのだが、こう言う場合、オリジナルをProj1に入れておいて、
Proj2から参照するようなやり方は出来る?
現状では、Proj1でCommonA,Bを変更する度にPorj2に手作業でコピーしているのだが、
それだと毎回そんな作業するのが手間だし、うっかりProj2側でCommonのファイルを変更すると
逆にProj1にも修正をしなくてはならないので困るのだが。

360:デフォルトの名無しさん
16/05/09 17:17:18.07 8SRbjrMh.net
既存のファイルを追加すれば参照してくれるでしょ
プロジェクト以下に収めなきゃいけない理由がないなら
common, proj1, proj2と横並びにすればいい

361:デフォルトの名無しさん
16/05/09 17:28:41.05 pzKdLl0R.net
>>344
レスありがとうございました。
既存のファイルを追加すると、そのコピーが追加されるので、結局343 で
説明したようなファイル構造になります。
困っています。

362:デフォルトの名無しさん
16/05/10 15:04:25.21 /c+E/E1d.net
だれも分からないの?

363:デフォルトの名無しさん
16/05/10 15:34:09.22 FvQx+NTV.net
VSでTypeScriptやってる人が少ないんでないの?
CとかC++を一緒にやってる人じゃないと最近の人はVSCodeを使うだろうし

364:デフォルトの名無しさん
16/05/10 18:31:49.18 /c+E/E1d.net
>>347
VSCodeだと343のような状況はどうなるの?
共通部分は一元管理が出来るの?

365:デフォルトの名無しさん
16/05/10 22:20:05.90 ygHcjv1V.net
私もやり方知りたいが分からんのでスタティックリンクにしてるがそれじゃ駄目?

366:デフォルトの名無しさん
16/05/10 22:23:56.70 /c+E/E1d.net
>>349
windowsでスタテクリンク出来る?

367:デフォルトの名無しさん
16/05/10 22:31:47.62 ygHcjv1V.net
ジャンクションでググて

368:デフォルトの名無しさん
16/05/10 22:34:19.65 LhMpTcEU.net
>>343
思想的には commonA/B を独立したプロジェクトにしてモジュールとして再利用するんだろうな。
こっそり同一ファイル扱いにするならファイル or フォルダをシンボ


369:リックリンクにするか。 これと似たようなものだが、昔は svn:externals を使ったこともあったな。



370:デフォルトの名無しさん
16/05/11 21:11:57.56 b7E4GV28.net
WindowsXPはハードリンクが出来るようになって便利だからフォルダをハードリンクにしたんだ
で、リンクした方が不要になったからごみ箱に入れたんだ
まだ、元のフォルダ内はなんともなかった
暫くたってごみ箱を空にしたんだよ
そしたら元のフォルダ内のファイルが全部消去されちまったんだよ!当然ごみ箱にも無い
要するにWindowsでフォルダをハードリンクすんなって事

371:デフォルトの名無しさん
16/05/11 22:31:42.85 3ijDNnlQ.net
ジャンクションでも似たような問題あるのか、、
URLリンク(d.hatena.ne.jp)
いまはどうなんだろう

372:デフォルトの名無しさん
16/05/12 18:40:46.37 jzt1qSkA.net
>>353
Windowsってフォルダのハードリンク作れたっけ?

373:デフォルトの名無しさん
16/05/14 11:35:56.64 r8zKr16p.net
そもそも別物なのに同じ挙動をすると期待するのが間違い

374:デフォルトの名無しさん
16/05/14 11:46:02.57 fLeelvLJ.net
XPでもジャンクション使えたけど
MSの態度が曖昧でどうしたいのかわからなかった
Vista でこの辺のファイルリンクとか代替ストリームとか正式サポートされた

375:デフォルトの名無しさん
16/05/16 19:25:09.47 xXNLqPYG.net
>>355
XPの時はフォルダのハードリンクは作れたよ。今は知らん
Linuxはフォルダ(ディレクトリ)のハードリンクはroot権限が必要になるな
OS問わずにフォルダのハードリンクは危険ってことだ
XPはシンボリックリンクが無くてハードリンクのみだから罠に嵌められた
Vista以降はシンボリックリンクが使えるからそっちは特に問題はないはず

376:デフォルトの名無しさん
16/05/16 21:06:35.83 0jMm0VW7.net
XPの時はフォルダのハードリンクは作れん。XP現役で使っている。
異なるドライブでも可能なジャンクションならできる。

377:デフォルトの名無しさん
16/05/17 11:18:29.53 NWTAtPGB.net
>>359
もれも 358 はパーティションをフォルダにリンクする話と間違ってるなーと思ってみてた

378:デフォルトの名無しさん
16/05/17 11:19:25.01 NWTAtPGB.net
リンクっつーよりマウントだな

379:デフォルトの名無しさん
16/05/17 13:37:15.22 vW2/638O.net
358だけど何らかのコマンドでリンクを作成したのは間違いないが
調べてみるとlinkd.exeの可能性が高い
要するにジャンクションって事か?
なにぶんXP使ってたのはかなり昔の事なんで記憶が曖昧だったよ

380:デフォルトの名無しさん
16/05/17 13:54:39.38 awF8sDTJ.net
Linuxでもディレクトリのハードリンクはできなかったはず。
URLリンク(unix.stackexchange.com)
>>358 のroot権限うんぬんは、Solaris限定かもしれない。
Windowsでも記事がある。今ならmklinkだけでいい。昔はfsutilなりlinkdなりもあった。
URLリンク(www.atmarkit.co.jp)
フォルダのハードリンクはできないから >>353 も用語違い。
まぁ、ジャンクション+ごみ箱が多くの不幸な事故を生み出したのはその通りだが。

381:デフォルトの名無しさん
16/05/17 14:37:13.73 74/nDTTZ.net
そんな事より元々の質問の答えは無いの?
俺も知りたい。共通ライブラリ化出来ないと不便だよな。

382:デフォルトの名無しさん
16/05/17 15:17:02.05 awF8sDTJ.net
そんな事より元々の質問をVisual Studio 2015のスレで聞け。
簡単な回答は >>344 >>352 で既出。
VS2015のUIだとファイルのコピーが作られるのが問題なのだろうが
*.csproj を直接テキスト編集すれば上位フォルダのパスも扱えるようには見える。
Include="..\xxx"

383:デフォルトの名無しさん
16/05/31 14:0


384:0:10.58 ID:DKR1hPoU.net



385:デフォルトの名無しさん
16/05/31 14:31:56.32 xl+n8Rkn.net
知らないものを始めたいときは、とりあえず「○○ 入門」でぐぐれ

386:デフォルトの名無しさん
16/06/01 22:34:33.37 tjGnKxey.net
ms謹製なので、msのツールが使えそう

387:デフォルトの名無しさん
16/06/04 18:08:24.21 3F7VjM1T.net
VSで作っているけど
#region
#endregion
的な物ない?

388:デフォルトの名無しさん
16/06/04 19:51:23.66 BRPGaK18.net
>>369
無い

389:デフォルトの名無しさん
16/06/04 21:45:06.08 dGWHMJs+.net
>>370
ありがとうございます!

390:369
16/06/04 22:49:04.19 3F7VjM1T.net
>>371
お前誰?

391:デフォルトの名無しさん
16/06/04 22:49:50.74 3F7VjM1T.net
>>370
ないんですね
ありがとうございます

392:デフォルトの名無しさん
16/06/04 23:36:31.88 o/6G/bzU.net
>>369
Proposal: Preprocessor Directives
URLリンク(github.com)
プリプロセスの提案はあるよ
でもこれに限らず、C#にある仕様だからといって優先的に取り組む感じはしないかな
節度を持ってJS文化に適合させていきたいのかもね

393:デフォルトの名無しさん
16/06/04 23:55:44.04 Ly/Eq9zA.net
プリプロセスなんてコンパイラだからこその機能なのにTypeScriptの設計者は
若干偏屈なところがあるよな
abstractは導入しといてvirtual,overrideがいらねーとか意味が分からん

394:デフォルトの名無しさん
16/06/05 18:43:32.96 sRhznVmp.net
色々入れすぎるとまたアンチM$(笑)から叩かれそう

395:デフォルトの名無しさん
16/06/10 22:29:38.27 L2JcFKfv.net
>>375
overrideは入りうるよ
一度は断ったけど、最近になって再検討して受け入れることにしたようだ
Support override keyword on class methods
URLリンク(github.com)

396:デフォルトの名無しさん
16/06/10 22:52:16.31 E+nifBZa.net
>>377
お、375じゃないけど超うれしい

397:デフォルトの名無しさん
16/06/16 19:04:16.91 PJUBR4L+.net
The Future of Declaration Files
URLリンク(blogs.msdn.microsoft.com)
関連
npmでTypeScriptの型定義を管理できるtypesパッケージについて
URLリンク(qiita.com)

398:デフォルトの名無しさん
16/07/15 00:06:52.35 3lt2T5b1.net
Announcing TypeScript 2.0 Beta
URLリンク(blogs.msdn.microsoft.com)
TypeScript 2.0 Beta 変更点
URLリンク(qiita.com)

399:デフォルトの名無しさん
16/07/15 00:10:10.35 3lt2T5b1.net
15K行のアプリをTypeScript1.8から2.0に移行してみた
URLリンク(rhysd.hatenablog.com)

400:デフォルトの名無しさん
16/07/17 11:23:12.55 cN3YyD0v.net
ES3対応ってまだいるの?

401:デフォルトの名無しさん
16/07/18 16:13:28.10 jfk77b+M.net
URLリンク(github.com)
TypeScript  ★13,201
CoffeeScript ★13,152
遂にGithubスター数がCoffeeScriptを超えた

402:デフォルトの名無しさん
16/07/19 12:58:14.30 HIwcb2q8.net
比べる事に意味があるとは思えんがな…
CoffeeScriptはAltJSでTypeScriptはBetterJSだ
JavaScriptが嫌いな人はCoffeeScriptを使えばいいんだ

403:デフォルトの名無しさん
16/07/24 15:50:35.09 5+wwO3kQ.net
Intellij IDEAでTS開発捗りすぎワロリンヌ

404:デフォルトの名無しさん
16/07/26 06:50:53.34 HN1KCMsQ.net
JavaScriptとTypeScriptの関係は
C言語とJavaの関係に似


405:ている様な気がする



406:デフォルトの名無しさん
16/07/26 07:58:39.74 l+RwS+H8.net
>>386
だから何よ?

407:デフォルトの名無しさん
16/07/26 15:46:52.18 iOw6CH/m.net
プロトタイプベースは人類には早すぎたんだ
クラスベースでないと万人には理解できない

408:デフォルトの名無しさん
16/07/26 16:29:48.15 GAZIoYVE.net
プロトタイプベースは既存のインスタンスから継承できる先進的な機能ではあるが
そもそも他の言語では隠されてる継承の仕組みがむき出しになってるだけなんで
無理に使う必要もない
クラスを作るイディオムとか普通にclassを使えばいいんだ

409:デフォルトの名無しさん
16/07/27 06:57:54.53 Pn9H7j+u.net
>>387
歴史は繰り返す

410:デフォルトの名無しさん
16/07/27 13:58:29.20 lrmpmMbD.net
WebAssemblyは当面C++のゲーム用だけどDOMもいじれるようになる予定だから
そうなるとまたWeb用言語の勢力図は変わるかもしれないな
Webの世界に安定は無い

411:デフォルトの名無しさん
16/07/27 14:22:46.06 5Q3W/uen.net
デバッガが当分クソそうだけどWebKitはそのうち充実させて生JS殺しにきそう

412:デフォルトの名無しさん
16/07/27 23:47:21.54 Bmh+9kmU.net
>>386
CとC++じゃね
統一言語の上位互換で、元々はトランスパイラだし

413:デフォルトの名無しさん
16/07/28 06:25:04.12 jPXeBRxR.net
FunScriptでもやるか

414:デフォルトの名無しさん
16/07/28 19:15:17.96 O8Vfrh0P.net
>>393
LLVMじゃね

415:デフォルトの名無しさん
16/07/29 10:57:47.10 eqy9GKk1.net
2.0のstrictNullChecksへの対応は結構キツイなぁ
「フィールドAがあれば、フィールドBも必ずある」ような暗黙ルールを咎められる
「変数?」が「型 | undefined」の扱いになるから
無効な値にはnullを使わずundefinedで統一したほうが良さそうだ
構文としては、返値、ローカル変数、末尾以外の引数にundefinedを許したい場合
いちいち「| undefined」が必要になる。Swiftのように ? は型の側が良い気がするんだが

416:デフォルトの名無しさん
16/07/29 14:56:44.05 LtIoC4Yb.net
undefinedはプロパティそのものが存在しないことを表すんだからプロパティ側に?付けるのは自然でしょ
2.0は個人的にはかなり好きだな
最近の新言語といえばWeb系のノリで適当に作られてるのが多い中、これほど思想が明確で一貫した言語は珍しい

417:デフォルトの名無しさん
16/07/29 16:06:58.19 eqy9GKk1.net
「存在しない」と「undefinedを保持している」の2つの意味があるからなぁ
前者ならプロパティの属性、後者なら型の属性に解釈できるように感じる
strictNullChecksは簡単には対応できなかったが
noImplicitThis, noUnusedLocals, noUnusedParameters は
影響が少ないわりにバグを拾ってくれてありがたかった

418:デフォルトの名無しさん
16/07/29 23:41:16.66 rRyJkXWQ.net
>>398
JavaScriptはundefineって言われても本当にundefinedなのか意図的に設定したundefinedか判別不能だから
nullとundefinedを区別する意味があるけど、TypeScriptの場合は「存在しない」なんて有り得ないからnullは要らない子だし
undefinedの場合は意図的に設定したと分かる

419:デフォルトの名無しさん
16/07/30 00:18:48.03 tmproLvF.net
ノードの有無のチェックは存在を確認するし番兵は一般的にnullを使う
前者はプロパティで後者は型だろう

420:デフォルトの名無しさん
16/07/30 08:46:23.50 d/v3ZRhl.net
F#「あなたはヌルチェックでどれほど人生を無駄使いしているかを知るべきである」

421:デフォルトの名無しさん
16/07/30 13:20:14.13 NnN7Vre0.net
===を使えば全部解決

422:デフォルトの名無しさん
16/07/30 23:28:44.49 r21OKS05.net
"型?" については "| null"、"| undefined"、その両�


423:福フ どれにすべきかで議論がまとまらなかったみたいだ しばらくは採用されないだろう https://github.com/Microsoft/TypeScript/issues/7426 https://github.com/Microsoft/TypeScript/issues/7488



424:デフォルトの名無しさん
16/08/01 14:04:09.45 FziUxCeM.net
>>400
DOMとかWebGLとか普通にnullを返すからどうしてもnullを使わないといけない場面は出てくる
けど、TypeScriptだけの処理の場合はnullを使う意味は全く無いな
本家のコーディングスタイルにもnullじゃなくundefinedを使えと書いてある

425:デフォルトの名無しさん
16/08/01 18:46:01.78 2iI0/+FF.net
JavaScriptの根幹にある設計ミスだからな
トランスパイラの層ではその尻を拭うのも難しかろう

426:デフォルトの名無しさん
16/08/01 19:32:59.87 RWxbqWQ0.net
>>404
知ってるけど命令型アルゴリズムを書くときにわざわざnullをundefinedに置換するほどのメリットもない
教科書通りnull使ったほうが思考のオーバーヘッドがなくて楽
どちらでもいい時はundefinedに寄せる

427:デフォルトの名無しさん
16/08/01 22:13:22.57 cFMFBdlm.net
Suggestion: Extension methods
URLリンク(github.com)
初期から提案のあった拡張メソッドだが、不採用が決まった

428:デフォルトの名無しさん
16/08/02 00:27:46.69 EfYzXtbg.net
型の有無で動作が変わるのはTypeScriptの設計思想からして不適切

429:デフォルトの名無しさん
16/08/02 12:10:13.85 rXn2IC8I.net
クラス定義には含まれないプロパティをインスタンスが持てる言語で
そもそも拡張メソッドが成り立つものなのかね?
Java interfaceのdefaultメソッドのほうがまだ芽がある気がするが

430:デフォルトの名無しさん
16/08/02 17:21:45.08 04yi8jv3.net
>>406
教科書って何だよ
俺たちの教科書はTypeScript公式のドキュメントだけだ

431:デフォルトの名無しさん
16/08/02 18:37:46.13 +e4iDA+F.net
>>410
アルゴリズムの本じゃね?

432:デフォルトの名無しさん
16/08/03 00:12:57.56 jr+ageRA.net
nullかどうか判定するのに
hoge === null
とかやってないよな?
!hoge
で統一すればundefinedのみで何の問題も無い

433:デフォルトの名無しさん
16/08/03 01:16:56.62 Ot1v5VqO.net
これはひどい釣り

434:デフォルトの名無しさん
16/08/03 08:01:27.31 8fjgpLNn.net
数値と文字が渡されないケースなら ! でも良い
渡されるなら == null (2個) を使う
TSLintの設定で、比較で null を使うのは許して、値としては許さないのが欲しいな

435:デフォルトの名無しさん
16/08/03 12:08:49.21 mbys/AN5.net
null汚染

436:デフォルトの名無しさん
16/08/03 14:40:42.74 3251V7HB.net
>>413
お前がど素人なのはわかったよw

437:デフォルトの名無しさん
16/08/03 17:20:15.41 3251V7HB.net
>>413,414とかってnumberな変数にnullとか代入しちゃってんだろうな…
そりゃstrictNullChecksで困るわけだ

438:デフォルトの名無しさん
16/08/03 21:04:30.24 Ot1v5VqO.net
入れるわけねーだろバカ

439:デフォルトの名無しさん
16/08/03 22:55:31.78 Ve2x0gaK.net
皆さん結局nullとundefinedを区別しているの?どんなコードを書いているの?

440:デフォルトの名無しさん
16/08/03 23:55:39.77 8fjgpLNn.net
一つの変数で区別する用途を無理やり考えるならば
・undefined: 初期化前
・null: 利用不可
・object: 利用可
なんて例があるかもしれない。普通はNullObjectで済ませるか

441:デフォルトの名無しさん
16/08/04 02:41:29.69 0QnTEdcF.net
>>418
じゃあif(!hoge)の判定がTypeScript的には何も問題無いことは分かるよな?
どの辺が釣りなのか教えてくれ

442:デフォルトの名無しさん
16/08/04 09:59:24.73 aMt1KCpE.net
strictNullChecksを気持ちよく使いたいなら構造から見直しになるな
{ x?, y? } // 必ずペアで使う
ではなく
{ pt?: { x, y } }
としないと ! を避けられない

443:デフォルトの名無しさん
16/08/08 22:15:39.27 W4Hzna5O.net
だれかtypeScriptでバリバリサーバサイドもやってるぜって人いる?
使い勝手を是非聞きたい

444:デフォルトの名無しさん
16/08/25 22:38:44.02 yGHELMdE.net
マクロのミスでconst enum同士で除算しちゃってて間違い探しをする羽目になったぜ
ありえない数値になってたのにコンパイラは叱ってくれなかったよ

445:デフォルトの名無しさん
16/08/26 07:44:50.99 LCNVy+4G.net
>>424
enum同士の除算結果の型はnumberだから、コンパイラの解釈は妥当だぞ
「単位付き数値」があればエラーにできるケースもあるかもしれない
Nominal typesの一環で良い感じの機能が入らないものか

446:デフォルトの名無しさん
16/08/26 10:18:15.73 uxIG+t+y.net
numberからconst enumへ暗黙的な変換が許されるのが問題だと思ったんよ
警告されれば先に気づくことができたから

447:デフォルトの名無しさん
16/08/26 15:52:13.72 mbeLOtT9.net
暗黙も何もenumの要素は最初からただのnumberだからな
JavaScriptとの互換性を考えれば妥当な仕様だろう

448:デフォルトの名無しさん
16/08/26 16:16:08.43 LCNVy+4G.net
他言語と比べると確かにチェックがガバガバだが
interfaceを明示的にimplementsしなくてもシグニチャだけを見ることと比べると
一貫性はあるとは思う。型システムがStructuralなことの弊害だろう
数値でなくても良いなら enum より String Literal Types を使うべきなんだろうな

449:デフォルトの名無しさん
16/08/26 16:48:05.33 mbeLOtT9.net
型システム自体はJavaScript側にあるんだ
TypeScriptがやってる事はJavaScriptのソースに書かれてる型を見えるようにしてるだけとも言える
そもそもJavaScriptが動的型なんだから無理やり静的型にしようとしても微妙なところは出てくるだろうな

450:デフォルトの名無しさん
16/09/01 04:24:05.73 oFB7MvRf.net
Announcing TypeScript 2.0 RC
URLリンク(blogs.msdn.microsoft.com)
>>380に追加
Number, enum, and boolean literal types
URLリンク(github.com)

451:デフォルトの名無しさん
16/09/02 02:34:58.82 D4RF+Hn1.net
switch使うとダサくなるな
match withにして欲しい

452:デフォルトの名無しさん
16/09/02 15:48:27.54 LgVEFfHs.net
内部モジュールについて教えてください。
これを使う場合ってconcatで1ファイル化する場合ってことでいいんでしょうか
webpackをつかって1ファイル化する予定なんですがその場合は外部モジュールを使う認識であっていますか?

453:デフォルトの名無しさん
16/09/02 17:23:11.44 dDo1g1S1.net
外部モジュールになるファイルは独立してるはず
今はnamespace推奨で内部モジュールって表現はあまり意味を成してない?
ので1ファイルにまとめたら名前空間で仕切られてるだけって考えでいいんじゃないか

454:デフォルトの名無しさん
16/09/03 00:54:26.94 FrYijLTu.net
昔からある単なるmoduleはもうobsoleteですぐにnamespaceにリネームすべきだね
いわゆるモジュールはJavaScriptの世界を知らないと理解しがたいものになってるね

455:デフォルトの名無しさん
16/09/03 00:56:21.93 FrYijLTu.net
ES6のmuduleが普及すればかなりシンプルになるんだろうけど、まだブラウザがサポートしてない

456:デフォルトの名無しさん
16/09/09 21:36:47.25 oMlYA35z.net
letは再入不可にして欲しいなあ

457:デフォルトの名無しさん
16/09/09 21:41:01.71 0o6Zl0oX.net
constじゃあかんの?

458:デフォルトの名無しさん
16/09/10 07:30:02.50 XD8JXdoT.net
なんか名前が先祖帰りっぽくてなあ

459:デフォルトの名無しさん
16/09/11 01:15:44.93 PWIs+lC0.net
>>436は「再入」不可と言ってんだが…

460:デフォルトの名無しさん
16/09/11 01:38:43.42 m+TGnnw0.net
リエントラントを意識したことが無かったりすると
再入って言葉を再代入の変わりに使ってもいいじゃん?とか思ってしまうのだろう

461:デフォルトの名無しさん
16/09/11 08:21:20.09 o8qO+nVm.net
「リエントラントな変数」はナンセンス�


462:セから、ま、多少はね?



463:デフォルトの名無しさん
16/09/14 09:26:01.83 tSXXNMuv.net
tsってjsに変換して型情報捨てちゃってるけどバイナリにコンパイルとかサポートしないのかな
WebAssemblyにそのまま使えたら面白いことになりそう

464:デフォルトの名無しさん
16/09/14 09:52:25.62 EEwsGEAZ.net
asm.jsは文法だけjsのサブセットで実行モデルは全然違うんでサポートしないっつうかできなかったはずだが、WebAssemblyも同じじゃないの?

465:デフォルトの名無しさん
16/09/14 10:28:43.01 8JRyg+5x.net
折角の型情報を活かせるのが構文チェックだけで
高速化には寄与しないってのは勿体ないのは確かだな

466:デフォルトの名無しさん
16/09/14 13:51:30.89 Adg+xGfe.net
TypeScriptのビジョン的には、そういうのはESが新バージョンで型アノテーションを導入して
ブラウザによって最適化されるべきということなんじゃない?
ハックで実装するのはTypeScript的じゃないよ

467:デフォルトの名無しさん
16/09/14 14:43:49.29 UUl7aTux.net
ES5と同じようにwasm用のサブセット作って段階的にサポートしていけば余裕しょ

468:デフォルトの名無しさん
16/09/14 14:58:26.52 Adg+xGfe.net
アセンブリレベルまでコンパイルしようと思えば現在JSに丸投げしてる部分をTSで独自に定義し直す必要があるから、
仕様はサブセットどころか無茶苦茶肥大化するよ

469:デフォルトの名無しさん
16/09/14 15:06:48.85 eWqPmXTS.net
どうせJavaやC#がWebAssemblyの出力に対応するだろうし、高速化を期待するならそっちを使うべきだな

470:デフォルトの名無しさん
16/09/14 15:12:59.56 eWqPmXTS.net
ただ、Webの世界はAPIが全てJavaScript用に定義されてる訳だから
DOMをいじるとかWeb関連のコードを書こうとしたらJavaScript使うのが一番楽だろう
で、TypeScriptを使えばエラーの少ないコードが書けるよってだけの存在だな

471:デフォルトの名無しさん
16/09/21 09:53:22.62 ye3OhaXn.net
netbeansでtsファイルをコンパイルできますか?

472:デフォルトの名無しさん
16/09/23 07:28:38.08 wUPl9fHa.net
TypeScript 2.0 正式リリース
URLリンク(blogs.msdn.microsoft.com)

473:デフォルトの名無しさん
16/09/25 21:22:23.16 rgw8PMte.net
Visual Studio2015のTypeScript2.0で
if(1===2){
 ...
}
とすると、
エラー TS2365 演算子 '===' を型 '1' および '2' に適用することはできません。
になるのですが、1と2を比較すると何が悪いのでしょうか?

474:デフォルトの名無しさん
16/09/25 22:06:10.66 s0l/HB/m.net
>>452
Tagged Union 由来のエラーのような気がする
ナンセンスなコードだけど、気になるようならエラーレポートしておいで
片方が変数なら問題ないから、普通にコードを書くうちは表面化しない

475:デフォルトの名無しさん
16/09/26 03:17:54.07 Pt8k1v+W.net
>>451
Revised 型の国のTypeScript
URLリンク(typescript.ninja)
>>430
TypeScript 2.0.3 変更点
URLリンク(qiita.com)

476:デフォルトの名無しさん
16/09/26 12:48:28.20 KtFZyGzz.net
型の国新人研修マニュアルみたいで微妙だった

477:デフォルトの名無しさん
16/09/26 14:39:12.43 ymOrEJcI.net
一瞬変な絵が出てブラクラかと思った
URLリンク(techbooster.github.io)

478:デフォルトの名無しさん
16/09/26 23:44:06.70 9aeHOXYg.net
>>452
これは興味深い挙動だな
確かにnumberよりも1や2という「型」の方がより特殊化されてるからそっちで比較されちゃったんだろうな
let n: 1 = 1;
if (n === 2) { // 同じエラー
if (n === <number>2) { // OK (もちろんfalseになる)
number型定数のデフォがnumber型だと最初がエラーにならなくなるから難しい問題だな
定数同士の比較の時は型を昇格させるみたいな処理�


479:ヌ加する事になるのかな



480:デフォルトの名無しさん
16/09/27 00:14:39.14 pG4L5ums.net
literal types増えたのリリースノートに書いてあるだろ
アナウンスのドキュメントさえ読まないバカが賢ぶってもまるわかりなんだよ

481:デフォルトの名無しさん
16/09/27 00:21:02.93 DHOAQjGg.net
変なのが来た

482:デフォルトの名無しさん
16/09/27 13:49:47.90 cO8I5ivP.net
Delphiか、、Prismはお試しで終わったっけな

483:デフォルトの名無しさん
16/09/27 16:37:55.22 LSfhFpLX.net
espower-typescriptのtypescript2対応版ってないですか?

484:デフォルトの名無しさん
16/09/27 18:40:40.20 LSfhFpLX.net
espower-typescriptは自動でproject rootのtsconfig.jsonを参照しているんですが
別ファイルで指定する方法ないでしょうか?

485:デフォルトの名無しさん
16/09/27 22:52:10.27 K3k5rGhG.net
>>458
とりあえず>>452のエラーの理由を詳細に説明してくれ

486:デフォルトの名無しさん
16/09/30 12:56:49.51 Y6l190wq.net
typescriptでは、
こういう書き方をするようですが、
$(document).ready(() => { ... });
普通の書き方
$(document).ready(function () { ... });
だとダメなのでしょうか?

487:デフォルトの名無しさん
16/09/30 13:07:29.24 LMNz6D7V.net
>>464
全く問題ないよ。関数内のthisの指し先の違いにだけ注意がいる

488:デフォルトの名無しさん
16/09/30 17:16:18.31 ff48EwFg.net
>>464
typeScriptというよりes2015ですね。

489:デフォルトの名無しさん
16/10/05 16:03:45.86 ndferu82.net
jQueryの場合はコールバック内で$(this)とかするけど() => {にするとおかしな事になる(最新だとどうなるかは分からん)
だからjQueryに渡す場合は全部functionにしてる。一貫性がなくなって気持ち悪いけど

490:デフォルトの名無しさん
16/10/06 09:02:48.12 RX03s8Mg.net
どちらも関数ではあるけど用途に違いがある以上、元より一貫性を出すことなんてできないでしょ

491:デフォルトの名無しさん
16/10/06 15:59:28.90 xaiWfMZS.net
() => {}.bind(this)

492:デフォルトの名無しさん
16/10/06 20:20:49.67 57+jsWi1.net
>>468
用途に違いがあるっていうのかな?
functionの挙動に依存しちゃってるから仕方なく使ってるってだけだし、いずれ使う必要は無くなる

493:デフォルトの名無しさん
16/10/07 14:51:03.71 CXORFQa6.net
null合体演算子はありますか?

494:デフォルトの名無しさん
16/10/08 21:45:49.55 2uwi8nYQ.net
>>471
|| のことかな? falseだとダメだけど

495:デフォルトの名無しさん
16/10/20 18:22:59.19 UBHF5fAS.net
typescriptでnode_modules配下のjsコードのimportは可能ですが
自作のjsコードをimportして使いたいのですが可能でしょうか?
具体的に言うとpegjsで作ったparserをtypescriptから使いたいんです。

496:デフォルトの名無しさん
16/10/21 09:58:59.53 xTFSBjWO.net
>>473
URLリンク(qiita.com)

497:デフォルトの名無しさん
16/10/21 10:02:09.42 PxEW311p.net
公開部分だけなら自分で定義ファイル書くのは容易なんじゃないか
もしくはソースをTypeScriptに変換しちゃって-d付きでコンパイル

498:デフォルトの名無しさん
16/10/21 12:40:55.64 xTFSBjWO.net
ちょっと考えればtsだってjsに変換してからimportしてるわけだからエラーが出てるようにみえるのは
定義がないだけってわかるだろうに。アホですな。

499:デフォルトの名無しさん
16/10/24 23:34:32.07 oa9Cbf2z.net
typescript2.0から.d.tsのデフォルトの検索パスってどうなってるんですかね?
とりあえず自分で定義したのはnode_modules/@types/ に置くことで認識はするんですけど
気持ち悪いのでできればnode_modulesに置きたくないんですよね

500:デフォルトの名無しさん
16/10/25 00:14:10.49 jY50IjHL.net
その手の質問はQ&Aサービス使え

501:デフォルトの名無しさん
16/10/25 09:54:10.21 wi8xj/Ad.net
>>477
--typeRoots
次からURLリンク(github.com)を必�


502:ヌとしてテンプレに入れようぜ



503:デフォルトの名無しさん
16/10/25 15:38:46.44 DJibeu24.net
そう言わずに教えてあげればいいじゃない。どうせ話題もないんだし

504:デフォルトの名無しさん
16/10/25 16:45:27.88 k0D4gpoS.net
.net frameworkを使えたりframeworkからコンパイルできれば面白くなりそうなのに

505:デフォルトの名無しさん
16/10/25 18:39:55.45 UTXk7OSn.net
たしかに .Net Framework使えたら便利だな
現状ではNode.jsから外部コマンドを叩いて
C#やPowerShellを経由すればできるんじゃね

506:デフォルトの名無しさん
16/10/25 20:33:02.00 DJibeu24.net
やっぱりTypeScript使いの人はMicrosoftマンセーの人が多いの?
Mac使いとしては.Netが使えたからどうなんって感じなんだが。
ElectronとかでTypeScriptを使う話をしてるの?

507:デフォルトの名無しさん
16/10/25 21:30:56.89 VLkXttsf.net
Windows向けtypescript処理系自体jscriptにコンパイルされて.NETオブジェクト経由でファイルアクセスしてなかったか

508:デフォルトの名無しさん
16/10/26 02:40:39.39 m/Az1cPZ.net
>>483
>TypeScript使いの人はMicrosoftマンセーの人が多いの?
特定の企業が好きというよりかは
デファクトスタンダードに乗りたいだけ
WinとMacならWinが(価格性能比的に)使いやすいし
AndroidとiPhoneならAndroidが使いやすいから
(規制が少ないのでとくに開発側としては)

509:デフォルトの名無しさん
16/10/26 03:51:14.56 CrOhdQQd.net
typescript使うよりc#で書くほうが楽だよね

510:デフォルトの名無しさん
16/10/26 07:48:56.60 JLzF9ZGl.net
>>481
JsProjectWinRTNamespace: URLリンク(msdn.microsoft.com)
WinRT (UWP) ならJavaScript側へ公開できるから、それを使うことは可能。
なんにせよ、JavaScriptホスト側を握っていれば (ChakraCore等) 好きにできる。Macでも。

511:デフォルトの名無しさん
16/10/26 10:52:47.34 jSNrAQ3l.net
>>484
.netじゃなくてWSHを使ってると思う
tsc.jsの2630行目辺りを読んでみれ

512:デフォルトの名無しさん
16/10/26 14:57:17.75 L9VZpe/b.net
tsc.js
URLリンク(github.com)

513:デフォルトの名無しさん
16/10/27 00:16:48.17 e6l93V+P.net
>>485
surfaceて高いイメージあるが。
最近はmacも安いし、unix系だからweb系ならmacの方が人気ないか?
そしてtypeScript使うやつはweb系だよね。

514:デフォルトの名無しさん
16/10/27 00:28:41.45 rC8yedLe.net
Web系といってもBtoBの比較的かっちりしたものをやってるところはC#やJava使ってWindows上で開発してるところも多いよ
そしてTypeScriptもWeb系の中では比較的そっちの方で好まれてるイメージ

515:デフォルトの名無しさん
16/10/27 07:44:18.44 aKCl6pYl.net
Web系じゃないけどソフトのプログラムでJavaScriptが採用されてるから使ってるよ

516:デフォルトの名無しさん
16/10/31 11:16:34.62 zObjWshz.net
データと操作を分離する運用
URLリンク(goo.gl)
上記スタックオーバーフローを見てたんですが
データ構造を扱うときにclassを使わずにすべてjsonにしてしまうって運用は結構を有る話でしょうか?
個人的にはElixirも触っていてデータ構造と処理関数を分けると言うのはアリだとは思うんですが
手元のコードはclass使いまくりでシリアライズが必要になったタイミングで軽く後悔しているところです(^ρ^)

517:デフォルトの名無しさん
16/10/31 12:47:50.83 UgzYDGEX.net
そんなに難しい話じゃないような
class Pen {
constructor(private json: PenData) {}
}
でいいじゃん

518:デフォルトの名無しさん
16/10/31 12:58:02.65 zObjWshz.net
>>494
それでデシリアライズしたものをシリアライズした時


519:にどうやってPenDataだと特定するの?



520:デフォルトの名無しさん
16/10/31 13:30:00.95 lUtaNTCT.net
>>495
シリアライズした構造が固定なら、ルートから順に再構築するのでは?
自分で全てのコンストラクタなりdeserializeメソッドを実装することになる
汎用デシリアライズ関数1個で全てを賄うつもりなら、JSON内にクラス名を保持して
クラス名とJSONからオブジェクトを構築するファクトリを用意するのかな
TypeScriptは実行時型情報が無いから、意外と素直で原始的な方式になると思う

521:デフォルトの名無しさん
16/10/31 16:02:19.09 zObjWshz.net
>>496
ですよね。結局こういうめんどくさい実装になるので、だったら
最初からロジック的にデータ構造はすべてjsonにしてしまったほうが楽かなと。

522:デフォルトの名無しさん
16/10/31 17:59:38.01 lUtaNTCT.net
>>497
ロジック的にJSON (=循環の無い木構造) にできるなら、それが楽だとは思う
実行時には循環参照が必要になる場合は、保存時にフラットなJSONに変換せざるを得ない
これを汎用化していくと、いわゆるO/Rマッパーになるんだろうな

523:デフォルトの名無しさん
16/10/31 20:32:53.85 963XFQ2I.net
ここまでなんのためにシリアライズするか確認するやつなし

524:デフォルトの名無しさん
16/10/31 21:41:15.52 UgzYDGEX.net
>>495
そんなもんまともなスキーマ設計してたら一意に決まるだろ
JSは伝統的にAPI指向で、入出力のスキーマだけはきっちり守って
あとは適当に辻褄合わせすればいいという考え方をするもんなんだよ
エンティティを重視しないの

525:デフォルトの名無しさん
16/10/31 21:42:12.65 zObjWshz.net
chrome extension作ってまして
background - popup -contentscript間のデータのやり取りがjson経由でしかできなかったので。

526:デフォルトの名無しさん
16/11/01 01:26:11.04 R4cGftBs.net
永続化や通信でシリアライズが必要ならまず構成と通信内容を決めて
実装可能であることを確認してから個々の実装に入るべきだった
行きあたりばったりで通信が必要なデータやコマンドが噴出してるだろうから
個別機能に逃げずに先にそこを設計しろ

527:デフォルトの名無しさん
16/11/01 03:17:05.88 ZbjdSYd3.net
>>501
普通にobjectを渡せるんじゃないか?

528:デフォルトの名無しさん
16/11/09 22:55:56.80 w82iFkDp.net
React Componentを相対パスでimportするのはもう嫌なので、絶対パスでimportしてやる
URLリンク(qiita.com)
コレいいなって思ったんですがTypeScriptで絶対パス指定する方法って標準であったりしないですかね?

529:デフォルトの名無しさん
16/11/10 00:57:52.66 +mabk82N.net
TypeScript 2.1 RC: Better Inference, Async Functions, and More
URLリンク(blogs.msdn.microsoft.com)

530:デフォルトの名無しさん
16/11/10 03:11:40.39 XJYCbDSV.net
モジュール周りはここに書いてあるようだ。
URLリンク(www.typescriptlang.org)

531:デフォルトの名無しさん
16/11/12 00:03:42.69 0EI9e+TE.net
>>505
TypeScript 2.1.1 変更点
URLリンク(qiita.com)

532:デフォルトの名無しさん
16/11/16 13:26:15.81 VglaLP8t.net
bucklescript ω

533:デフォルトの名無しさん
16/11/20 01:23:41.33 PZEuAd0p.net
みんなエディタは何使ってるの? VisualStudio以外にいいエディタある?

534:デフォルトの名無しさん
16/11/20 08:29:21.81 p95gh/Vn.net
vscode

535:デフォルトの名無しさん
16/11/20 09:20:47.29 mNZMIvsS.net
vim

536:デフォルトの名無しさん
16/11/20 09:40:13.46 0ByPx+DX.net
Emacs
URLリンク(www.typescriptlang.org)
の下の方にEmacsのTypeScript開発環境へのリンク


537:がある。メソッド補完とかリファクタリングとか全部出来る



538:デフォルトの名無しさん
16/11/20 16:06:26.39 rN9nZaoB.net
>>509
ALM
URLリンク(alm.tools)
好きが高じてエディタまで作ってしまった例

539:デフォルトの名無しさん
16/11/20 17:44:23.07 Y8tBh63Q.net
>>513
+1

540:デフォルトの名無しさん
16/11/24 16:16:50.02 Kbd9UGgc.net
ALM 使ってみたけど、JIS キーボードで CTRL+¥ が効かなくてツリービューが出ない…
ファイル操作はツリービューでやるんだよね?

541:デフォルトの名無しさん
16/11/25 11:07:12.84 lg4MxwBZ.net
>>513
本家のプレイグラウンドも楽しいけど、ちょっと他のライブラリとか合わせられるようなのもほしい。 こういうのと組み合わせて作ってくんないかなー。

542:デフォルトの名無しさん
16/12/01 23:31:35.77 V3pVktwk.net
TypeScript Advent Calendar 2016
URLリンク(qiita.com)
(今年も)やっちまった感

543:デフォルトの名無しさん
16/12/02 15:42:21.41 ocojT6FV.net
需要なしか

544:デフォルトの名無しさん
16/12/02 21:48:15.76 i9Hqboy9.net
12月突入数時間前まで誰も立てなかったしそりゃね

545:デフォルトの名無しさん
16/12/03 16:07:27.97 iU+ignEA.net
いつも納期を守らないひとですねわかります

546:デフォルトの名無しさん
16/12/03 22:27:39.83 W5YxFMDl.net
TypeScript 2.1のkeyofとかMapped typesがアツい
URLリンク(qiita.com)
そろそろ2.1正式版来る気配

547:デフォルトの名無しさん
16/12/05 08:39:36.02 vZnFdVec.net
人気ないでしょ。

548:デフォルトの名無しさん
16/12/05 09:21:11.08 nuFcVUYF.net
英語圏はどうなのよ

549:デフォルトの名無しさん
16/12/05 16:49:11.01 5hp1IXjD.net
>>521
パスやファイル名に日本語が有ると
エラーする問題はこれで直るのか?

550:デフォルトの名無しさん
16/12/05 17:57:33.20 dF177W8B.net
>>519
Tcl/Tkの誰か立ててよ

551:デフォルトの名無しさん
16/12/08 07:43:57.58 sRPpwh3/.net
URLリンク(blogs.msdn.microsoft.com)
「...」系の構文が増えるといいなぁ
最近のC++に追加された構文が便利だから

552:デフォルトの名無しさん
16/12/08 14:41:29.32 K4A6J/m6.net
しかしkeyofとかTypeScriptスゲーな
型言語としてやれる事はとことんやろうという方針なんだな
keyofは既存のJavaScriptコードと連携する時にコーディングミスをコンパイル時に分かるようになるって事かな
TypeScriptオンリーの時は多分使いそうにないけど、何か使いどころがあるんだろうか?

553:デフォルトの名無しさん
16/12/08 14:49:41.32 K4A6J/m6.net
と思ったらMapped Typesでkeyofが必要だったんだな。納得した。
Mapped Typesは使いどころを模索中…

554:デフォルトの名無しさん
16/12/08 23:29:45.09 /aGxLpEu.net
ちょっと手段が目的化してる感が否めないなあ
最初からTypeScript前提で作ったモジュールを使う分にはkeyofが必要な状況はそう無いだろうし、
既存のJSライブラリのインターフェース書くための機能だと割り切るんだったら
そこまで厳格にDRYに拘る必要もないように思うが

555:デフォルトの名無しさん
16/12/09 08:58:45.48 zMqsgGKG.net
・interface を readonly の有無で2回書かなくて良い
・エレメントに設定する一連の属性をオブジェクトで渡す際の型安全
ぱっと思いつくだけでも悪くない機能だと思うけど

556:デフォルトの名無しさん
16/12/10 08:55:22.73 ZQIWZdV9.net
classのコンストラクタを定義する場合、もしメンバ変数が20個あるとすると、
コンストラクタにも20個の引数を並べて、
constructor(arg1, arg2, ......, arg20){
 this.parm1 = arg1;
 this.parm2 = arg2;
 this.parm3 = arg3;
 ..
}
のようにする必要がありますか?
もう少し簡素に書けませんか?

557:デフォルトの名無しさん
16/12/10 10:13:56.45 yQhPHczS.net
constructor(public parm1, private parm2) {

558:デフォルトの名無しさん
16/12/10 13:08:54.64 ZQIWZdV9.net
>>532
そんな技が有ったのですか!
ありがとうございました。

559:デフォルトの名無しさん
16/12/16 22:23:17.99 Za7bRyyh.net
型システムがチューリング完全になっててもおかしくないな
たしか scala と c++ は達成してた筈

560:デフォルトの名無しさん
16/12/16 22:39:54.50 lf6NCS1E.net
C++はtemplateでしょ
template引数の扱いがほぼ帰納関数の定義みたいなもんだしな

561:デフォルトの名無しさん
16/12/16 22:40:27.11 oD0nT6zl.net
TypeScriptの型はあくまで検査専用でメタプログラミングには使えないから無理じゃない?

562:デフォルトの名無しさん
16/12/16 23:19:39.50 hVjcwv5q.net
C++のテンプレートがチューリング完全だとしても文字列のハッシュ値は計算出来ない
なぜならC++の文字列はポインタでしかないけどコンパイル前に参照する事が出来ないから
それでもチューリング完全なのは間違いないけど、別にチューリング完全だからってなんでも出来るわけじゃないってことだな

563:デフォルトの名無しさん
16/12/16 23:21:43.20 hVjcwv5q.net
ちなみに文字列じゃなくて文字の配列にすれば問題ない
const char* str = "hoge";じゃなくて
const char str[] = { 'h', 'o', 'g', 'e' };ってこと

564:デフォルトの名無しさん
16/12/16 23:24:42.09 hVjcwv5q.net
間違えた…
const char str[] = { 'h', 'o', 'g', 'e', '\0' };
だった
連投ごめんなさい

565:デフォルトの名無しさん
16/12/16 23:29:20.71 lf6NCS1E.net
ゲーデル「そこはゲーデル数で…」

566:デフォルトの名無しさん
16/12/16 23:34:58.93 ZvALx4tK.net
ゲーデルはホント天才だよな
紙と手廻し計算機しかない時代に
「符号化すれば数式だろうが証明図だろうが数で表せるし
数の計算が数式処理や証明じゃん」なんて

567:デフォルトの名無しさん
16/12/17 17:02:33.38 a9hyyPvt.net
むしろその世代だったからよかったのかも

568:デフォルトの名無しさん
16/12/18 15:38:22.61 6QPg4rBj.net
TypeScript 2.0.8でちょっとお尋ね
~~~~file1.ts
namespace TestNS { export interface TestInterface {} }
~~~~
~~~~file2.ts
/// <reference path="file1.ts" />
import * as Lib from "~"; ← こいつがいると下のTestInterfaceでTS:2304 Cannot find nameが出る(コメントアウトすれば出ない)
namespace TestNS {
export class Test implements TestInterface {}
}
~~~~
上に書いた通りimport文がいるとTestInterfaceでTS:2304 Cannot find name 'TestInterface'になるんだけれども, これってどう理解したらよい?
import文の有無で見つからなくなるのはとても不思議な感があるんだけど

569:デフォルトの名無しさん
16/12/18 15:52:58.94 gkl2dVgP.net
内部モジュール形式と外部があって内部だとネームスペースはすべて同じものとしてマージされるから参照できる
内部ゴミだから外部覚えろ

570:デフォルトの名無しさん
16/12/19 20:40:04.16 tHwvluTB.net
reference pathは使わないことを勧める
型定義ファイルの参照はreference typesや--types
連結するなら目的別にプロジェクトを分けて--outFile

571:543
16/12/19 23:08:19.83 WEeYyWf0.net
結局外部モジュール化して解決しました
細かいことは組んでからコンパイル済みソース見て考えることにします

572:デフォルトの名無しさん
17/01/19 09:39:46.00 uhfgjGGl.net
URLリンク(chrome.google.com)

573:デフォルトの名無しさん
17/02/03 10:13:11.49 ppyFFvug.net
TypeScript 2.2
URLリンク(blogs.msdn.microsoft.com)
・object type - "non-primitive"を表す型
・mixins and composable classes - 無名クラスを返す関数のサポート

574:デフォルトの名無しさん
17/02/03 11:53:48.71 OZdxyk8U.net
>>548
rcかあ
入れるのはやめとくわ

575:デフォルトの名無しさん
17/02/13 21:38:00.71 g48+zfGw.net
typescript版のjsFiddleみたいなのないですかね?

576:デフォルトの名無しさん
17/02/13 21:52:46.81 XAOuYKtl.net
>>550
URLリンク(jsfiddle.net)
typescript選べるんだけど、何がお望み?

577:デフォルトの名無しさん
17/02/14 08:03:16.30 06xiI2rQ.net
>>551
補完が効かないとtypescriptの意味ないよね。

578:デフォルトの名無しさん
17/02/14 22:01:13.41 PJNUS5QV.net
なぜ TypeScript の型システムが健全性を諦めているか
URLリンク(qiita.com)

579:デフォルトの名無しさん
17/02/15 11:35:44.90 Uv6dN9fe.net
typescriptでvue.js使ってる人っています?
どんな感じか聞いてもいいですか?
vueファイルのscriptにtypescriptを使った場合にVisualStudioCodeから補完聞かせる方法ってあるんですかね?

580:デフォルトの名無しさん
17/02/15 13:37:43.12 0zPxl8zN.net
いいよ
あるよ

581:デフォルトの名無しさん
17/02/16 14:34:53.75 I/Biy33K.net
typescript ってclassの中でclassは定義できないの?

582:デフォルトの名無しさん
17/02/16 16:54:40.22 H/kSQGez.net
>>556
innerClass = class { ... } の構文を使ってみては?

583:デフォルトの名無しさん
17/02/16 18:23:19.49 I/Biy33K.net
>>557
さんきゅう。
その後、自分でも調べてそういう構文を見付けたのだが、
なぜ一般的な言語のようにclassをネスト出来ないのかな?

584:デフォルトの名無しさん
17/02/17 10:02:26.32 XBlUtmng.net
構造的にESにないものは採用されないんじゃなかろうか
俺もprivate static Inner = class {...で試したけどあまり使えなさそうだからやめた

585:デフォルトの名無しさん
17/02/23 21:12:34.52 sjM/LKuB.net
Announcing TypeScript 2.2
URLリンク(blogs.msdn.microsoft.com)
TypeScript 2.2.1 変更点
URLリンク(qiita.com)

586:デフォルトの名無しさん
17/02/26 21:26:09.95 6xiviMi3d
Angular2に関する質問で、専用スレッドみたいなものが見つからなかったのここで質問させてください。

Angluar2でWebSocketをしようしたファイルをつくっているのですが、

ngOnInit内のws.onmessageの中で
Component直下のグローバル変数に値をいれた後
他のComponent直下の関数内で
値が書き換えられていない(初期値があれば初期値、なければundefined)ということが起きています。

onmessage内ではonmessage内でしか書き換えた値が使えないなんていうことがあるのでしょうか。
必要であればコードはります。

Angular初心者でTypeScriptに関しても理解が浅いため
だれかお力添えお願いします。

587:デフォルトの名無しさん
17/03/19 00:28:00.75 zrbJr/YL.net
Chrome拡張機能を作ってる方結構いるみたいなので教えてほしいのですが
「chrome.~~~」のAPIが「Supplied parameters do not match any signature of call target.」とコンパイルエラーになります
「/// <reference path="./node_modules/@types/chrome/index.d.ts" />」でd.tsは指定しているのですが、他にも何か記述が必要ですか?

588:デフォルトの名無しさん
17/03/19 02:18:51.51 9qStAS/N.net
>>562
そもそも今は/// <reference path=みたいな書き方はしない。
@types/XX npm install すれば使えるはず。

589:デフォルトの名無しさん
17/03/19 02:40:46.59 /2pY/ZTT.net
インストしても明示的なインポートなしには使えんよ

590:デフォルトの名無しさん
17/03/19 03:16:06.29 TMN19OY5.net
>>562
エラーしてる部分のソース貼るといいよ

591:561
17/03/19 11:24:02.73 zrbJr/YL.net
皆様ありがとうございます…解決しました…chrome.~~に引数が設定されてなくてエラーになるという超凡ミスでした…
エラーメッセージの意味をきちんと理解しないといけないですね…
--- コンパイルエラー ----------------------------------------------------------
if (window.location.href.indexOf('aaa.com') !== -1) {
chrome.pageAction.onClicked.addListener();
}
------------------------------------------------------------------------------
--- コンパイル正常 -----------------------------------------------------------
if (window.location.href.indexOf('aaa.com') !== -1) {
chrome.pageAction.onClicked.addListener(() => {
});
}
------------------------------------------------------------------------------
あと、仰る通り<reference path= />なくてもコンパイル通りました
皆様お騒がせしました

592:デフォルトの名無しさん
17/03/19 13:25:11.81 9qStAS/N.net
>>566
エディター何使ってんの?
typescriptなら書いてるそばから検出できるエラーじゃないのか?

593:デフォルトの名無しさん
17/03/28 10:03:39.39 r9lg9pov.net
ターゲットにWebAssemblyを追加する計画とか無いのかな

594:デフォルトの名無しさん
17/03/28 14:44:15.57 3EkUFmFA.net
interfaceの定義でArrayの要素が2つしかない場合の定義の仕方ってあるかな
interface Pair {
number[2]
}
interface Data {
pairs :Pair[]
}
みたいな感じで定義できないもんか。
諦めてnumber[]にするしかない?

595:デフォルトの名無しさん
17/03/28 14:54:23.37 OG3qmdJs.net
タプル使え

596:デフォルトの名無しさん
17/03/28 17:30:18.19 3EkUFmFA.net
>>570
thanks
type Pair = [number,number]
interface Data {
pairs :Pair[]
}

597:デフォルトの名無しさん
17/03/30 23:49:26.09 Ya8jf9nB.net
index.htmlに直接CDNからreactとreact-domを読み込んで
npmからは@types/reactと@types/react-domをインストールし
tsxファイルからimport文を使わずにreactを使ったところ何の問題もなく動いた。
plotly.jsを同じように使おうとしたら自動では定義ファイルを読んでくれない。
この違いは一体何なのか?
と思って定義ファイルを見たところreactとreact-domには以下のような記載がある
export as namespace ReactDOM;
export as namespace React;
上記を真似て定義ファイルに
export as namespace Plotly;
を追加したら同じ挙動になった。
export as namespace XXX ってなんすか?

598:デフォルトの名無しさん
17/03/31 01:47:51.53 y+1gOmlP.net
そのモジュールのグローバル変数化宣言
公式wiki嫁

599:デフォルトの名無しさん
17/04/01 20:31:37.83 es45r1Ne.net
型定義ファイルの書き方がよくわからなくてつんでいます
node-transmission
URLリンク(github.com)
の型定義ファイルが見当たらないので作っているんですが
もとのjsファイルのexport宣言が
var Transmission = module.exports = function (options) {
ってなっている場合に型定義ファイルとして以下のように書いても認識されないです。
declare interface transOptions {
port: number
host: string
}
declare class Transmission {
constructor(optins: transOptions)
}
export default Transmission
使う場合に
import * as Transmission from "transmission";
var transmission = new Transmission({
port : 9091,
host : '127.0.0.1'
});
って書いてもtransmission はany型のようです。
どう書くのが正解でしょうか?

600:デフォルトの名無しさん
17/04/01 22:04:14.42 es45r1Ne.net
>>574
すいません。自己解決しました。
JSのモジュールまじしんどい

601:デフォルトの名無しさん
17/04/09 14:34:29.06 ZBMiMXkM.net
>>41
partial classは不採用になったので一応
Suggestion Backlog Slog, 4/3/2017
URLリンク(github.com)
URLリンク(github.com)

602:デフォルトの名無しさん
17/04/10 14:18:00.18 BK5DCjs2.net
G


603:oogle社内の標準言語としてTypeScriptが承認される。ng-conf 2017 http://www.publickey1.jp/blog/17/googletypescriptng-conf_2017.html



604:デフォルトの名無しさん
17/04/10 18:26:24.79 VEGABUso.net
>>577
Dartどうすんだよ

605:デフォルトの名無しさん
17/04/10 20:28:20.75 kMiVc4KU.net
劣るうえ、使われてないdartは自動消滅。
ホントはわかってたこと。

606:デフォルトの名無しさん
17/04/11 02:02:21.52 Kcnbnd8w.net
typescriptでreduxの実装書くのしんどいね
URLリンク(qiita.com)
こいつを参考に書いてるけど。他にいい書き方があれば

607:デフォルトの名無しさん
17/04/11 07:02:04.43 OeT6CnRN.net
>>580
おまおれ
mapStateToPropsとかの引数も型どうしていいか分からん

608:デフォルトの名無しさん
17/04/11 17:04:01.31 ejHOB/DU.net
>>580
こんなの誰が何に使うの?

609:デフォルトの名無しさん
17/04/11 19:22:39.80 +8we66Ry.net
ほんそれ

610:デフォルトの名無しさん
17/04/11 22:09:52.06 rpuwd/d9.net
TypeScriptでreact-router-reduxに手を出したら大変な目に遭った。

611:デフォルトの名無しさん
17/04/11 22:24:37.23 YJpuA+WP.net
単語が3つ以上入ってるパッケージに近寄りたくない

612:デフォルトの名無しさん
17/04/12 19:01:00.44 BxTB0mZM.net
>>577,578
もうjavaやめてtypescriptでandroidアプリ開発できるようにしてほしい。
でも本心はdart頑張れ。

613:デフォルトの名無しさん
17/04/12 19:19:27.95 usx2Dq45.net
そういうフレームワーク色々あるやん

614:デフォルトの名無しさん
17/04/12 20:26:06.76 IsZRv2xh.net
>>580
これの2.0/2.1用ってのをやってみたら#defineが欲しくなった。
ストリングリテラルを置き換えられるマクロみたいなものってないのかな?

615:デフォルトの名無しさん
17/04/12 20:47:03.00 usx2Dq45.net
>>588
何が欲しいのかよく解らんが
const ABC=”str”
じゃあかんのか?

616:デフォルトの名無しさん
17/04/12 20:56:38.51 IsZRv2xh.net
そのABCはストリングリテラル型には使えんわけよ。

617:デフォルトの名無しさん
17/04/12 21:04:32.60 WRJ4LE6o.net
redux の冗長な書き方をtypescriptの機能でなんとかしてほしいってことなんだろうけど。
react見たくpropsをinterface定義すれば大体いい感じで使える。みたいにredux の方もstateのinterface定義だけでいい感じに出来上がるような仕組みがほしい。

618:デフォルトの名無しさん
17/04/12 21:05:36.55 WRJ4LE6o.net
>>586
つreact native

619:デフォルトの名無しさん
17/04/12 22:41:00.77 mYXXp/Z3.net
>>590
const ABC:"str" = "str";
こういうことか

620:デフォルトの名無しさん
17/04/12 23:07:35.91 IsZRv2xh.net
それ。
strが短いならそのまま書いても一緒だけど、actionのtypeって長くなりがちだから
二重に書くのがつらい。

621:デフォルトの名無しさん
17/04/12 23:08:47.06 0/0fFwi6.net
>>578
TypeScriptが標準言語になっても、Dartのことは忘れてませんよとGoogle担当者がフォロー
URLリンク(www.publickey1.jp)

622:デフォルトの名無しさん
17/04/12 23:50:07.42 29ufoOq3.net
constは型書かなくてもストリングリテラルに推論されるようになったんだが存知ない?

623:デフォルトの名無しさん
17/04/13 00:12:31.67 IFJ42qsr.net
2.1からだね。2.0でも使ってたんだろうか

624:デフォルトの名無しさん
17/04/13 00:19:44.83 rVYtPk7E.net
ストリングリテラルに推論されるって?
これ通らないでしょ?
const STR = "str";
const ABC: STR = STR;

625:デフォルトの名無しさん
17/04/13 00:27:33.33 IFJ42qsr.net
>>598
そりゃ二行目がストリングリテラルじゃないからね

626:デフォルトの名無しさん
17/04/13 00:33:01.65 rVYtPk7E.net
だからそれが書けないから>>594だってことだろ。
結局>>596は何の話をしてたんだ?

627:デフォルトの名無しさん
17/04/13 00:34:18.77 IFJ42qsr.net
なにがやりたいのかよく解らんが
const STR = "str";
const ABC1 = STR;
const ABC2:”str” = ABC1;
type STRT=”str”;
const ABC3:STRT=STR;
全部通るよ

628:デフォルトの名無しさん
17/04/13 00:39:19.82 7ydi5nIB.net
>>600
エラーメッセージも読めない奴がずいぶんと偉そうだな
ドキュメント100回読み直してこい

629:デフォルトの名無しさん
17/04/13 00:40:44.33 rVYtPk7E.net
>>601
やりたいのはそこで言うSTRTとSTRの共通化。
要は同じ"str"を重複して書きたくないってこと。

630:デフォルトの名無しさん
17/04/13 00:44:07.45 7ydi5nIB.net
変数の型の参照なんて初歩の初歩なんだが教えてやるまい

631:デフォルトの名無しさん
17/04/13 01:00:49.62 IFJ42qsr.net
>>603
えっ 普通推論させるから書かないでしょ
わざわざ書かなきゃならなくなるケースってどんな時よ

632:デフォルトの名無しさん
17/04/13 01:13:36.05 rVYtPk7E.net
const STR = "str";
type STRT = "str";
const ABC3: STRT=STR;
"str"を2回書かずにABC3が作れればそれでいいんだけど。

633:デフォルトの名無しさん
17/04/13 01:20:51.05 IFJ42qsr.net
>>606
const STR = "str";
const ABC3 = STR;

634:デフォルトの名無しさん
17/04/13 06:09:08.50 32cPtkAw.net
type STRT = typeof STR

635:デフォルトの名無しさん
17/04/13 08:01:19.65 rVYtPk7E.net
すまん、確かに思い違いしていたようだ。ありがとう。

636:デフォルトの名無しさん
17/04/13 13:00:24.68 XE18llYI.net
恥ずかしか

637:デフォルトの名無しさん
17/04/13 20:33:25.78 IFJ42qsr.net
認めて謝って感謝してるだけ立派だよ

638:デフォルトの名無しさん
17/04/16 20:56:40.61 nOhMz2bP.net
TypeScriptでExpressを使う場合について教えてください。
express-generatorなどのサンプルコードだと new Error したオブジェクトにstatusを
突っ込んで返していたりしますが、ここ、TypeScript的にはどうするのが普通でしょう?
みなさん自前でErrorのサブクラスを定義しているんでしょうか?あるいはどこかに
定番のものがあったりするんでしょうか?

639:デフォルトの名無しさん
17/04/16 22:51:14.41 SqhlDt4o.net
「どうでもいい」が普通じゃない?
そんなもんエラーハンドラで受けて適当にトレースとエラーメッセージ出したら終わりなんだから
型なんぞ要らん
手段と目的を履き違えるな

640:デフォルトの名無しさん
17/04/16 23:30:20.32 R4TJTEcK.net
>>612
jsonとして扱えるようにインターフェース定義にしておいたほうが無難な気がする。
シリアライズしても簡単にもとに戻せるし。

641:デフォルトの名無しさん
17/04/17 00:09:50.93 CyuLkfZA.net
そういうもんですかね?
エラーを表示するだけとは言ってもstatusは正しくセットしなきゃならないわけで、
TypeScriptを使う以上そこも型安全にやりたいってのは自然だと思うんですが。
そこだけtslintの警告をネグるのも気持ち悪いし。

642:デフォルトの名無しさん
17/04/17 00:24:52.52 GVmJ+xSa.net
アプリケーションの仕様としてエラー用のクラスを定義します。Errorのサブクラスだったり新規に自前のクラスを用意するかはケースバイケース。
当然途中で変わることもあり得ます。その際はきちんと他のメンバーと情報共有します。

643:デフォルトの名無しさん
17/04/17 07:32:40.57 k0Nquy2H.net
自分は簡単なアプリではHttpErrorみたいなクラスを定義して使ってる。
もっと複雑なアプリだと、業務エラーのコードとHTTPのエラーコードで
もう一階層作ったりもするけど。
だが、これが推奨なやり方なのかは分からん。俺も知りたい。

644:デフォルトの名無しさん
17/04/17 08:40:01.39 CyuLkfZA.net
ありがとうございます。
statusというプロパティにステータスを返すのは決まっているんだからどこかに
出来合いのものがあるかと思ったんですが、やっぱり自前なんですね。

645:デフォルトの名無しさん
17/04/20 11:26:28.02 T7Zz78Cb.net
npm linkを駆使してtypescriptでビジネスロジックを外部モジュールにしてるんだけど
tsc -wで自動コンパイルはできるんだけど
定義ファイルも同時に生成するコマンドオプションってないかな?

646:デフォルトの名無しさん
17/04/20 11:42:22.36 T7Zz78Cb.net
>>619 すんません -w -dですね。ホント申し訳ない



648:デフォルトの名無しさん
17/04/21 21:22:59.73 Uj6lwvRH.net
TypeScriptで動的なキャストみたいなことってできるんでしょうか?
// どこかで定義されたclass
class X {}
interface AX extends X {
a: string;
}
func(x: X) {
if ( xが a: string というプロパティを持っていれば ) {
// ここではxをAXとして扱いたい
}
}

649:デフォルトの名無しさん
17/04/22 00:25:56.48 NysYFg8M.net
>>621
let ax=<AX>x
でキャスト出来る。
インターフェースが存在するかどうかはチェックはされないから注意。

650:デフォルトの名無しさん
17/04/22 10:55:16.81 scznilxz.net
>>622
ありがとうございました。うまくいきました。

651:デフォルトの名無しさん
17/04/26 12:25:16.92 mOputr8e.net
f8appのコード読んでんだけど
flowって驚くほどtypeScriptと似てるね。
んでReduxのアクションな書き方が参考になる。
type ParseObject = Object;
export type Action =
{ type: 'LOADED_ABOUT', list: Array<ParseObject> }
| { type: 'LOADED_NOTIFICATIONS', list: Array<ParseObject> }
| { type: 'LOADED_MAPS', list: Array<ParseObject> }
コレ普通にtypeScriptでも使えた。
interface宣言だとこういう書き方できなけどtype宣言だとできんのね。

652:デフォルトの名無しさん
17/04/27 14:10:54.61 2oprloyo.net
いやーTypeScriptって本当にいいものですよね
恥ずかしいソース書いてもコンパイルすればそれなりの形になってますし
全ソースが1つにまとまったjsファイルを見るとカタルシスを覚えます
javascriptを扱うのに最高の言語です

653:デフォルトの名無しさん
17/04/27 16:28:37.55 a+4IBLmk.net
開発用と納品用でコードわけられるとかありがたい

654:デフォルトの名無しさん
17/04/27 17:45:10.06 /9P4GBtP.net
minifyが出来なくて悩んでおります。
Targetをes5にしてもエラーが出る。

655:デフォルトの名無しさん
17/04/28 08:31:59.89 IMlkcp1b.net
>>627
結局該当箇所っぽいところの構造を変えて解決した

case 'Text':
{
let text: Text;
/* ごちゃごちゃした処理*/
text = {
type: 'Text',
value: node.value,
cache: nodeCache
};
return text;
}
ってなってるところで
なぜがtextという変数がminifyで消えずに残っていてエラーになっていたところ

case 'Text':
{
// let text: Text; <―削除
/* ごちゃごちゃした処理*/
let text:Text = {
type: 'Text',
value: node.value,
cache: nodeCache
};
return text;
}

ってしたら治った。

656:デフォルトの名無しさん
17/04/28 09:00:40.63 IMlkcp1b.net
すいませんminifyの件ですが一番の問題は

外部ライブラリとして別にパッケージを作ってnpm linkしていたんですが
その外部ライブラリのtsconfigの設定でtargetをes2015にしていたのが原因のようです。

npm上で公開してるライブラリってes2015のものとes5のものが混ざってるんですかね?もしそうならminifyのとき問題でそう。

そろそろブラウザもes2015に対応してきたし外部ライブラリもes2015でいいんじゃないかと思いましたがまだまだes5のほうがいいんですかねー

657:デフォルトの名無しさん
17/04/28 15:19:33.29 ZmVIrkLy.net
Announcing TypeScript 2.3
URLリンク(blogs.msdn.microsoft.com)

658:デフォルトの名無しさん
17/04/28 21:52:24.09 CfPEmNk9.net
>>629
ちゃんと設定すれば、TypeScriptが変換してくれるんじゃないの?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch