X



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

■ このスレッドは過去ログ倉庫に格納されています
0322デフォルトの名無しさん
垢版 |
2016/03/29(火) 10:54:45.27ID:NGEgZfA0
>>321
基本TypeScriptはES2015のpolifillだと思っていいけど
単に少ないコードで実装出来るものしか対応してないだけだ
__extendsとか__decorateとかね
2.0でasync/awaitもES5で使えるようになるけど、もしWeakMapを対応したら
巨大なコードが*.jsの頭に引っ付くことになるけどそんなの嫌だろ
0323デフォルトの名無しさん
垢版 |
2016/04/05(火) 23:45:55.11ID:nWoaZGhX
JavaのNashornにrequire関数組み込んでTypeScript使えるようにしたが結構楽しいわ
letの暗黙リネームが実行時に何か不具合起こすんじゃないかと少々気になる
0324デフォルトの名無しさん
垢版 |
2016/04/06(水) 20:01:43.86ID:NydnT1H+
>>323
letが導入されてから1.8になるまでforループ内でlet使うと特定の条件で実行時エラーを起こしてた
1.8で修正されたから古いバージョンの場合は気を付けた方がいいけど1.8以降は不具合なんて起こさないはず
0325デフォルトの名無しさん
垢版 |
2016/04/11(月) 23:59:54.54ID:/4tKcoWK
typescript初心者です。
Visual Studioで、
module mod {
function func() {
alert('func');
}
}
が、
var mod;
(function (mod) {
function func() {
alert('func');
}
})(mod || (mod = {}));

になるのですが、分からないのは、
(mod || (mod = {}));
の部分です。
これは何でしょうか?
どなたか解説お願いいたします。あるいはヒントなどお教えください。
0326デフォルトの名無しさん
垢版 |
2016/04/12(火) 00:19:14.57ID:ep3rTpAI
>>325
mod 変数が定義済みなら再利用 or 無ければ新規の空オブジェクトを使う。
複数の場所で mod モジュールが定義される場合に、内容をマージすることになる。
0327デフォルトの名無しさん
垢版 |
2016/04/12(火) 00:20:23.42ID:L6C4Yo9J
(A || B)はAもしくはBが偽じゃなければその内容(結果)を返す特性があって
単純に言うとmodが空ならオブジェクト代入して無名関数に渡すよってこと
0328デフォルトの名無しさん
垢版 |
2016/04/12(火) 00:47:40.67ID:X3YsmN+g
>>326 >>327
解説ありがとうございました。だいぶ分かってきました。
もう一つ教えて下さい。
二つのtsファイル
----------------
// file1.ts
module mod {
  function func1() {
    alert('func1');
  }
}
----------------
// file2.ts
module mod {
  function func2() {
    alert('func2');
  }
}
----------------
0329デフォルトの名無しさん
垢版 |
2016/04/12(火) 00:48:40.40ID:X3YsmN+g
から生成される二つの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ファイルを一つのファイルに連結したいのですが、エラーが出て行き詰っています。
こういうやり方は間違いですか?
0330デフォルトの名無しさん
垢版 |
2016/04/12(火) 10:30:36.29ID:ep3rTpAI
>>329
連結する順番でエラーになることはある。
特にグローバルスコープ(関数の外)で処理が走る場合かな?

tslint を入れて no-use-before-declare (宣言前に使うと警告) で
チェックする手はあるかもしれない。
0333デフォルトの名無しさん
垢版 |
2016/04/13(水) 16:45:42.60ID:xgAfpouO
おおって思ってchannel9の動画見てみたらマイクロソフトの人が未だにtsd
使ってデモしてたんだけどtsd非推奨じゃなかったんかい
0334デフォルトの名無しさん
垢版 |
2016/04/13(水) 16:56:49.53ID:xgAfpouO
面白いねTypeScript2.0

undefinedとnullはそれぞれ独立した型になって
let a: number|null|undefined
みたいに宣言するようになるのか
0336デフォルトの名無しさん
垢版 |
2016/04/14(木) 12:17:58.56ID:ea0e/BMW
C#のvirtual,overrideも実装してくれよ
issueには何度かあがってるけどその度に否定されてんだよな、何でだ
0337デフォルトの名無しさん
垢版 |
2016/05/01(日) 13:04:39.03ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
0338デフォルトの名無しさん
垢版 |
2016/05/01(日) 20:44:35.23ID:sHMevs8d
Visual Studio Comm. 2015でTypeScript 1.7.4.0を使ってます。
プロジェクトをビルドしてデバッグしても変更が反映されなくなりました。
仕方なく新しいプロジェクトを作ってソースを移動させているのですが、対処法はありますか?
0339デフォルトの名無しさん
垢版 |
2016/05/01(日) 21:13:58.28ID:1U34S4Ix
>>338
>変更が反映されなくなりました。
何の変更がどこに反映されないん?
tsからjsが自動生成されないと言う意味?
もしそうならtsに文法エラーが有るんじゃないか?
0340デフォルトの名無しさん
垢版 |
2016/05/02(月) 10:47:24.02ID:H1b5QbBD
レスありがとうございます。こんなに早く反応があるとは思いませんでした。見逃してしまって申し訳ないです。

>何の変更がどこに反映されないのか
ソースコードの変更です。
ビルドして実行してもjsが前回のビルドのままで困っていました。

>tsからjsが自動生成されないと言う意味?
>もしそうならtsに文法エラーが有るんじゃないか?
仰る通り文法エラーがあったみたいです。今では正常に実行できています。ご迷惑をおかけしました。

それにしても間違ったコードを書いてもビルドエラーにはならないんですね……。
これではどこでミスったかチェックしにくい。
0341デフォルトの名無しさん
垢版 |
2016/05/02(月) 16:08:44.94ID:WvgoLY0A
「新しいプロジェクトを作ってソースを移動させ」たらうまくいくのだがという話じゃなかったのか
0342デフォルトの名無しさん
垢版 |
2016/05/03(火) 07:37:48.31ID:llYnk/DC
「新しいプロジェクトを作ってソースを移動させたらうまくいく」ケースは俺も何度か経験したことがあるなぁ
しかも>>338と違ってコンパイルエラーは発生していない

ビルドして実行してもjsが前回のビルドのままってところまでは一致してるんだよな
(そもそもビルドできないのだが)
0343デフォルトの名無しさん
垢版 |
2016/05/09(月) 17:02:14.42ID:pzKdLl0R
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にも修正をしなくてはならないので困るのだが。
0344デフォルトの名無しさん
垢版 |
2016/05/09(月) 17:17:18.07ID:8SRbjrMh
既存のファイルを追加すれば参照してくれるでしょ
プロジェクト以下に収めなきゃいけない理由がないなら
common, proj1, proj2と横並びにすればいい
0345デフォルトの名無しさん
垢版 |
2016/05/09(月) 17:28:41.05ID:pzKdLl0R
>>344
レスありがとうございました。
既存のファイルを追加すると、そのコピーが追加されるので、結局343 で
説明したようなファイル構造になります。
困っています。
0347デフォルトの名無しさん
垢版 |
2016/05/10(火) 15:34:09.22ID:FvQx+NTV
VSでTypeScriptやってる人が少ないんでないの?
CとかC++を一緒にやってる人じゃないと最近の人はVSCodeを使うだろうし
0349デフォルトの名無しさん
垢版 |
2016/05/10(火) 22:20:05.90ID:ygHcjv1V
私もやり方知りたいが分からんのでスタティックリンクにしてるがそれじゃ駄目?
0352デフォルトの名無しさん
垢版 |
2016/05/10(火) 22:34:19.65ID:LhMpTcEU
>>343
思想的には commonA/B を独立したプロジェクトにしてモジュールとして再利用するんだろうな。
こっそり同一ファイル扱いにするならファイル or フォルダをシンボリックリンクにするか。
これと似たようなものだが、昔は svn:externals を使ったこともあったな。
0353デフォルトの名無しさん
垢版 |
2016/05/11(水) 21:11:57.56ID:b7E4GV28
WindowsXPはハードリンクが出来るようになって便利だからフォルダをハードリンクにしたんだ
で、リンクした方が不要になったからごみ箱に入れたんだ
まだ、元のフォルダ内はなんともなかった
暫くたってごみ箱を空にしたんだよ
そしたら元のフォルダ内のファイルが全部消去されちまったんだよ!当然ごみ箱にも無い
要するにWindowsでフォルダをハードリンクすんなって事
0356デフォルトの名無しさん
垢版 |
2016/05/14(土) 11:35:56.64ID:r8zKr16p
そもそも別物なのに同じ挙動をすると期待するのが間違い
0357デフォルトの名無しさん
垢版 |
2016/05/14(土) 11:46:02.57ID:fLeelvLJ
XPでもジャンクション使えたけど
MSの態度が曖昧でどうしたいのかわからなかった

Vista でこの辺のファイルリンクとか代替ストリームとか正式サポートされた
0358デフォルトの名無しさん
垢版 |
2016/05/16(月) 19:25:09.47ID:xXNLqPYG
>>355
XPの時はフォルダのハードリンクは作れたよ。今は知らん
Linuxはフォルダ(ディレクトリ)のハードリンクはroot権限が必要になるな
OS問わずにフォルダのハードリンクは危険ってことだ
XPはシンボリックリンクが無くてハードリンクのみだから罠に嵌められた
Vista以降はシンボリックリンクが使えるからそっちは特に問題はないはず
0359デフォルトの名無しさん
垢版 |
2016/05/16(月) 21:06:35.83ID:0jMm0VW7
XPの時はフォルダのハードリンクは作れん。XP現役で使っている。
異なるドライブでも可能なジャンクションならできる。
0362デフォルトの名無しさん
垢版 |
2016/05/17(火) 13:37:15.22ID:vW2/638O
358だけど何らかのコマンドでリンクを作成したのは間違いないが
調べてみるとlinkd.exeの可能性が高い
要するにジャンクションって事か?
なにぶんXP使ってたのはかなり昔の事なんで記憶が曖昧だったよ
0363デフォルトの名無しさん
垢版 |
2016/05/17(火) 13:54:39.38ID:awF8sDTJ
Linuxでもディレクトリのハードリンクはできなかったはず。
http://unix.stackexchange.com/questions/22394/why-are-hard-links-to-directories-not-allowed-in-unix-linux
>>358 のroot権限うんぬんは、Solaris限定かもしれない。

Windowsでも記事がある。今ならmklinkだけでいい。昔はfsutilなりlinkdなりもあった。
http://www.atmarkit.co.jp/ait/articles/1306/07/news111.html
フォルダのハードリンクはできないから >>353 も用語違い。
まぁ、ジャンクション+ごみ箱が多くの不幸な事故を生み出したのはその通りだが。
0364デフォルトの名無しさん
垢版 |
2016/05/17(火) 14:37:13.73ID:74/nDTTZ
そんな事より元々の質問の答えは無いの?
俺も知りたい。共通ライブラリ化出来ないと不便だよな。
0365デフォルトの名無しさん
垢版 |
2016/05/17(火) 15:17:02.05ID:awF8sDTJ
そんな事より元々の質問をVisual Studio 2015のスレで聞け。
簡単な回答は >>344 >>352 で既出。

VS2015のUIだとファイルのコピーが作られるのが問題なのだろうが
*.csproj を直接テキスト編集すれば上位フォルダのパスも扱えるようには見える。
Include="..\xxx"
0372369
垢版 |
2016/06/04(土) 22:49:04.19ID:3F7VjM1T
>>371
お前誰?
0375デフォルトの名無しさん
垢版 |
2016/06/04(土) 23:55:44.04ID:Ly/Eq9zA
プリプロセスなんてコンパイラだからこその機能なのにTypeScriptの設計者は
若干偏屈なところがあるよな
abstractは導入しといてvirtual,overrideがいらねーとか意味が分からん
0384デフォルトの名無しさん
垢版 |
2016/07/19(火) 12:58:14.30ID:HIwcb2q8
比べる事に意味があるとは思えんがな…
CoffeeScriptはAltJSでTypeScriptはBetterJSだ
JavaScriptが嫌いな人はCoffeeScriptを使えばいいんだ
0388デフォルトの名無しさん
垢版 |
2016/07/26(火) 15:46:52.18ID:iOw6CH/m
プロトタイプベースは人類には早すぎたんだ
クラスベースでないと万人には理解できない
0389デフォルトの名無しさん
垢版 |
2016/07/26(火) 16:29:48.15ID:GAZIoYVE
プロトタイプベースは既存のインスタンスから継承できる先進的な機能ではあるが
そもそも他の言語では隠されてる継承の仕組みがむき出しになってるだけなんで
無理に使う必要もない
クラスを作るイディオムとか普通にclassを使えばいいんだ
0391デフォルトの名無しさん
垢版 |
2016/07/27(水) 13:58:29.20ID:lrmpmMbD
WebAssemblyは当面C++のゲーム用だけどDOMもいじれるようになる予定だから
そうなるとまたWeb用言語の勢力図は変わるかもしれないな
Webの世界に安定は無い
0396デフォルトの名無しさん
垢版 |
2016/07/29(金) 10:57:47.10ID:eqy9GKk1
2.0のstrictNullChecksへの対応は結構キツイなぁ
「フィールドAがあれば、フィールドBも必ずある」ような暗黙ルールを咎められる

「変数?」が「型 | undefined」の扱いになるから
無効な値にはnullを使わずundefinedで統一したほうが良さそうだ

構文としては、返値、ローカル変数、末尾以外の引数にundefinedを許したい場合
いちいち「| undefined」が必要になる。Swiftのように ? は型の側が良い気がするんだが
0397デフォルトの名無しさん
垢版 |
2016/07/29(金) 14:56:44.05ID:LtIoC4Yb
undefinedはプロパティそのものが存在しないことを表すんだからプロパティ側に?付けるのは自然でしょ
2.0は個人的にはかなり好きだな
最近の新言語といえばWeb系のノリで適当に作られてるのが多い中、これほど思想が明確で一貫した言語は珍しい
0398デフォルトの名無しさん
垢版 |
2016/07/29(金) 16:06:58.19ID:eqy9GKk1
「存在しない」と「undefinedを保持している」の2つの意味があるからなぁ
前者ならプロパティの属性、後者なら型の属性に解釈できるように感じる

strictNullChecksは簡単には対応できなかったが
noImplicitThis, noUnusedLocals, noUnusedParameters は
影響が少ないわりにバグを拾ってくれてありがたかった
0399デフォルトの名無しさん
垢版 |
2016/07/29(金) 23:41:16.66ID:rRyJkXWQ
>>398
JavaScriptはundefineって言われても本当にundefinedなのか意図的に設定したundefinedか判別不能だから
nullとundefinedを区別する意味があるけど、TypeScriptの場合は「存在しない」なんて有り得ないからnullは要らない子だし
undefinedの場合は意図的に設定したと分かる
0400デフォルトの名無しさん
垢版 |
2016/07/30(土) 00:18:48.03ID:tmproLvF
ノードの有無のチェックは存在を確認するし番兵は一般的にnullを使う
前者はプロパティで後者は型だろう
0401デフォルトの名無しさん
垢版 |
2016/07/30(土) 08:46:23.50ID:d/v3ZRhl
F#「あなたはヌルチェックでどれほど人生を無駄使いしているかを知るべきである」
0402デフォルトの名無しさん
垢版 |
2016/07/30(土) 13:20:14.13ID:NnN7Vre0
===を使えば全部解決
0404デフォルトの名無しさん
垢版 |
2016/08/01(月) 14:04:09.45ID:FziUxCeM
>>400
DOMとかWebGLとか普通にnullを返すからどうしてもnullを使わないといけない場面は出てくる
けど、TypeScriptだけの処理の場合はnullを使う意味は全く無いな
本家のコーディングスタイルにもnullじゃなくundefinedを使えと書いてある
0405デフォルトの名無しさん
垢版 |
2016/08/01(月) 18:46:01.78ID:2iI0/+FF
JavaScriptの根幹にある設計ミスだからな
トランスパイラの層ではその尻を拭うのも難しかろう
0406デフォルトの名無しさん
垢版 |
2016/08/01(月) 19:32:59.87ID:RWxbqWQ0
>>404
知ってるけど命令型アルゴリズムを書くときにわざわざnullをundefinedに置換するほどのメリットもない
教科書通りnull使ったほうが思考のオーバーヘッドがなくて楽
どちらでもいい時はundefinedに寄せる
0409デフォルトの名無しさん
垢版 |
2016/08/02(火) 12:10:13.85ID:rXn2IC8I
クラス定義には含まれないプロパティをインスタンスが持てる言語で
そもそも拡張メソッドが成り立つものなのかね?
Java interfaceのdefaultメソッドのほうがまだ芽がある気がするが
0412デフォルトの名無しさん
垢版 |
2016/08/03(水) 00:12:57.56ID:jr+ageRA
nullかどうか判定するのに
hoge === null
とかやってないよな?
!hoge
で統一すればundefinedのみで何の問題も無い
0414デフォルトの名無しさん
垢版 |
2016/08/03(水) 08:01:27.31ID:8fjgpLNn
数値と文字が渡されないケースなら ! でも良い
渡されるなら == null (2個) を使う

TSLintの設定で、比較で null を使うのは許して、値としては許さないのが欲しいな
0417デフォルトの名無しさん
垢版 |
2016/08/03(水) 17:20:15.41ID:3251V7HB
>>413,414とかってnumberな変数にnullとか代入しちゃってんだろうな…
そりゃstrictNullChecksで困るわけだ
0420デフォルトの名無しさん
垢版 |
2016/08/03(水) 23:55:39.77ID:8fjgpLNn
一つの変数で区別する用途を無理やり考えるならば
・undefined: 初期化前
・null: 利用不可
・object: 利用可
なんて例があるかもしれない。普通はNullObjectで済ませるか
0421デフォルトの名無しさん
垢版 |
2016/08/04(木) 02:41:29.69ID:0QnTEdcF
>>418
じゃあif(!hoge)の判定がTypeScript的には何も問題無いことは分かるよな?
どの辺が釣りなのか教えてくれ
■ このスレッドは過去ログ倉庫に格納されています

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