[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 03/16 07:51 / Filesize : 265 KB / Number-of Response : 1047
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

TypeScript part2



1 名前:デフォルトの名無しさん [2015/04/30(木) 18:37:29.98 ID:ynMflk1l.net]
www.typescriptlang.org/

TypeScript lets you write JavaScript the way you really want to.
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
Any browser. Any host. Any OS. Open Source.

前スレ
peace.2ch.net/test/read.cgi/tech/1349187527/

2 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 11:16:24.11 ID:O5IrbREb.net]
https://twitter.com/ironshay/status/593855606747860992

Anders, father of C#, and Misko, father of angular,
on the same stage at Build2015.

3 名前:デフォルトの名無しさん [2015/05/01(金) 12:23:58.69 ID:Cd44J9+J.net]
>>2
MSとGoogle夢の共演

4 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 16:28:43.35 ID:Cd44J9+J.net]
Announcing TypeScript 1.5 Beta
blogs.msdn.com/b/typescript/archive/2015/04/30/announcing-typescript-1-5-beta.aspx

しかし、いきなり大量のコンパイルエラーが…
まだ更新しない方が良さそう

5 名前:デフォルトの名無しさん mailto:sage [2015/05/03(日) 17:06:42.35 ID:rBxa49N8.net]
インストールしたら1.5 Betaが入りました。
$ tsc sample.tsでコンパイルしたjavascriptファイルを$ node sample.jsで実行すると
__.prototype = b.prototype;の箇所でエラーになるんですが
typescriptの書き方でおかしいところを教えてください

module M {
export interface aInterface {
f1(): void;
}

export interface bInterface {
f2(): void;
}

class A extends B implements aInterface {
f1() {
console.log(1);
}
}

class B implements bInterface {
f2() {
console.log(2);
}
}
}

6 名前:デフォルトの名無しさん mailto:sage [2015/05/03(日) 17:38:50.79 ID:RegehUyj.net]
>>5
BをAより前に書く

7 名前:デフォルトの名無しさん mailto:sage [2015/05/03(日) 18:27:42.73 ID:H+7a6WF5.net]
>>6
できました
ありがとうございます

8 名前:デフォルトの名無しさん mailto:sage [2015/05/12(火) 21:39:01.53 ID:bsrem9uN.net]
typescriptの勉強の為、型推論とanyを使わない書き方を知りたいのですが
コンパイルすると error TS2339: Property 'classList' does not exist on type 'EventTarget'.
ってエラーが出ます。
(1)と(2)の行を型指定しなければエラーが出ないのですが、どのような型を指定したらエラーがでないのでしょうか?

class A {
eventFunc(e: MouseEvent) { // (1)
var target:EventTarget = e.target; // (2)
target.classList.add('red');
}

f() {
window.addEventListener('click', this.eventFunc, false);
}
}

9 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 08:53:02.33 ID:8FgeUemt.net]
(2)をvar target = <Element>e.target;でいいんじゃないかな
DOMの仕様でtargetがElementではないケースがあるのかどうか知らないけど、少なくとも自分で扱う範囲なら問題ないでしょ

10 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 10:56:22.23 ID:2k7sC9bw.net]
>>8
classListだから
var target = <HTMLElement>e.target;
または
var target: HTMLElement = e.target;
じゃないかな?
分からない場合はlib.d.tsを見ればいいよ



11 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 17:58:04.11 ID:EXojY7d0.net]
最初の頃は律儀に型指定してたけど面倒くさいからもうやってない
コンパイル速度が上がるわけでもない。

12 名前:デフォルトの名無しさん mailto:sage [2015/05/14(木) 11:17:19.81 ID:gHUa6+Se.net]
tsc --noImplicitAnyでかつ明示的にanyを使ってなくてエラーがでなければ
型安全が保たれてるから何も毎回型指定する必要はないよ

ただjquery.d.tsとかanyだらけなんで実行しないとエラーが出ない事とかよくある
単純にjQuery使う程度ならJavaScriptのままでいいとは思う

13 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 21:53:08.26 ID:jTi6Q4y/.net]
やっぱ堅い仕様で書いてるとtscでインライン化して欲しくなっちゃうなぁ

14 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 11:52:22.54 ID:QvLzrgmO.net]
>>13
インライン化し始めるとjsのソースがグチャグチャになりそうだ
get,setはあるんだからそれでいいんじゃないの?

15 名前:デフォルトの名無しさん mailto:sage [2015/06/06(土) 09:46:32.31 ID:be84NOOA.net]
>>14
うちの場合JavaScriptはただの実行ファイル扱いだからね
デバッグはソースマップなりインライン化の無効なりできればいいんじゃないかな

16 名前:デフォルトの名無しさん mailto:sage [2015/06/07(日) 13:32:40.51 ID:yxti539q.net]
1.5がなかなか正式リリースされないのはなんでぞ

17 名前:デフォルトの名無しさん mailto:sage [2015/06/07(日) 20:32:21.84 ID:4Wk1GroN.net]
>>16
元々の予定にはなかったDecoratorを入れたからじゃないかな
仕様の検証の為に1.5AlphaやBetaを挟んだのだと思う

18 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 14:13:38.63 ID:X0sByrSC.net]
>>15
インライン化がもし速度の為だったら速くなるかどうかは未知数だな
JITコンパイラの高速化の癖というか挙動を予測するのはかなりむずい
あくまで主観だけど長くなった関数は高速に実行されにくくて
細かく関数に分けた方が速くなる気がする (実際にそういう事はあった)
関数単位でコンパイルするしないを決めてるっぽいし

19 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 22:54:39.34 ID:wugeehUL.net]
>>17
サンキュー

20 名前:デフォルトの名無しさん mailto:sage [2015/06/10(水) 17:03:59.59 ID:/7VhIJtD.net]
解析によるインライン化はtscでもJITでも好きにしてくれていいけど
inlineキーワードで明示できた方が気持ち的にスッキリする



21 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 11:14:55.39 ID:kEEgKM4/.net]
ES6がいろんなブラウザで動かせるようになった頃にTypeScriptってどうなるの?

22 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 13:05:05.85 ID:4ooRsfQ9.net]
ECMAScript2015(旧ES6)がリリースされたんだな
>>21
TypeScriptの最大のメリットは静的型チェックだから有用性は全く変わらない
他にもprivate指定とかも有用だし既にES7(ES2016?)の仕様も先取りしようとしてるよ

23 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 12:12:04.05 ID:6sfBPUUP.net]
newさせないようにコンストラクターを非公開にしたい
現状でも実現できるけど、そのためにインターフェースを2つも書くのは面倒くさい

24 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 10:51:34.25 ID:4m+kxR2f.net]
blogs.msdn.com/b/typescript/archive/2015/07/13/the-typescript-team-is-hiring.aspx
TypeScript Teamの求人だってさ

25 名前:デフォルトの名無しさん [2015/07/21(火) 01:31:13.85 ID:/gCXtG+X.net]
Announcing TypeScript 1.5
blogs.msdn.com/b/typescript/archive/2015/07/20/announcing-typescript-1-5.aspx

VS2015と合わせてきたか

26 名前:デフォルトの名無しさん mailto:sage [2015/07/21(火) 01:32:58.22 ID:/gCXtG+X.net]
https://github.com/Microsoft/TypeScript/wiki/Roadmap
>1.6
>ES6 Generators
>Local types
>Generic type aliases
>Expressions in class extends clauses
>Class expressions
>exclude property in tsconfig.json
>User defined type guard functions
>async/await for ES6
>External module resolution enhancements
>JSX support
>Intersection types
>abstract classes and methods

次の仕込み進んでるね

27 名前:デフォルトの名無しさん mailto:sage [2015/07/21(火) 02:33:09.52 ID:rWNspVF5.net]
昔はJScriptという亜種JavaScriptを作っていたMSが
今はJavaScriptの未来を作ってるんだから興味深いよ。

V8を作ってるGoogleが作ってるAngularJSが
TypeScriptを採用してるっていうんだからね。
世の中何が起こるかわからない。

28 名前:デフォルトの名無しさん mailto:sage [2015/07/21(火) 10:29:14.64 ID:JRZO1Ijb.net]
ES6以降の見識とかモダン言語のたしなみがないと新機能を追いかけるのは難しくなってきてるな

29 名前:デフォルトの名無しさん [2015/09/03(木) 18:56:51.43 ID:nwE/lfZd.net]
Announcing TypeScript 1.6 Beta
blogs.msdn.com/b/typescript/archive/2015/09/02/announcing-typescript-1-6-beta-react-jsx-better-error-checking-and-more.aspx

30 名前:デフォルトの名無しさん mailto:sage [2015/09/09(水) 13:41:12.43 ID:/LabsqIc.net]
node.js 4.0.0 がリリースされたけど tsc 1.5.3 でのコンパイルは問題なかったよ



31 名前:デフォルトの名無しさん [2015/09/17(木) 11:57:54.97 ID:EJYiGj1J.net]
TypeScript 1.6 来た!
blogs.msdn.com/b/typescript/archive/2015/09/16/announcing-typescript-1-6.aspx

classとか型関連の機能追加が多いかな

32 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 13:08:48.57 ID:1pEQnj0M.net]
日本語で更新内容を教えて

33 名前:デフォルトの名無しさん [2015/09/17(木) 13:39:47.54 ID:EJYiGj1J.net]


34 名前:>>32
誰かがブログで解説するだろうからそれを待て

あと1.6でオブジェクトリテラルの型チェックが厳密になって大量のエラーが…
https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes
↑ここに対処法とか書いてあるからバージョンアップする場合は見るべし
[]
[ここ壊れてます]

35 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 00:34:58.40 ID:RRhCs/3r.net]
>>32
TypeScript 1.6.0-beta 変更点
qiita.com/vvakame/items/072fa78f9fe496edd1f0
TypeScriptがReactをサポート
www.infoq.com/jp/news/2015/09/typescript16-react

1.6betaの記事だけど、1.6正式版でも同じだよ

36 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 13:25:38.28 ID:5DFpZmVK.net]
typescriptって型を省略せずに書くのが王道なの?どうなのかおしえてください

37 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 13:57:38.01 ID:k2h28xWP.net]
>>35
var a = 1;
は型を省略して書いてるように見えるが型推論されてaはnumber型に固定される
その後a = "hoge";と書くとエラーになる
型推論をあてにして型を省略するのは普通だがそういう事を聞いてんの?

38 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 14:07:02.02 ID:YDlHSLNo.net]
partialはサポートしてないんですよね?

39 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 14:10:18.85 ID:RAm+PgpZ.net]
>>36
これからは型をかかないようにします

40 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 18:23:15.46 ID:c/9pCOim.net]
関数の引数の型は書いて下さいね
あと --noImplicitAny は忘れずに



41 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 18:44:40.47 ID:JwHQ7pBT.net]
--noImplicitAny を付けてれば引き数の型を書かないとエラーになるけど
戻り値の型は省略できてしまう
コンパイラは型推論で戻り値の型は分かるから補完候補の表示で型は分かるけど
戻り値の型もちゃんと書いた方がいいね
そうすると整数を返す予定だったところを文字列返しちゃった時にエラーになる

42 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 02:53:49.54 ID:HtrqvoEB.net]
>>37
対応してませんね
けれど前から提案はされていて、C#と異なる使い方も模索されているみたいです

Partial classes
https://github.com/Microsoft/TypeScript/issues/563
Suggestion: Reopen static and instance side of classes
https://github.com/Microsoft/TypeScript/issues/2957

43 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 12:29:38.37 ID:O/xnKl5a.net]
>>41
そういうのはinterfaceとかmodule(namespace)を使えば実用上困ることは
無いと思うからいらないでしょ

44 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 10:49:02.03 ID:HkSezUmR.net]
コードの中にnew Promiseを書くと
tsc test.tsでチェックしたら
error TS2304: Cannot find name 'Promise'
って出るんですがこれはどうしたらでなく出来ますか?

45 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 11:10:26.45 ID:x61qrQJS.net]
>>43
tsc --target ES6 にするかそれが無理なら
https://github.com/borisyankov/DefinitelyTyped/tree/master/es6-promise
からes6-promise.d.tsを落としてくる

46 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 11:39:52.85 ID:HkSezUmR.net]
--target ES6を指定します
どうもありがとうございます

47 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 18:36:19.11 ID:OMUtivN5.net]
var i;
var l;
var a = [
{"a":1},
{"b":1},
]

for (var i = 0; i < a.length; i++) {
console.log(a[i]);

}

コンパイルすると
TS2403: Subsequent variable declarations must have the same type. Variable 'i' must be of type 'any', but here has type 'number'
ってなるんですがよく分かりませんどうかけばいいんでしょうか

48 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 23:27:40.80 ID:x61qrQJS.net]
>>46
エラーメッセージが理解出来れば分かる事ではあるが…
var i; ← iの型がany
for (var i = 0; ← iの型がnumberだから矛盾してると言ってる
var i;を消すかvar i: number;とすればいいよ

49 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 13:23:21.78 ID:DvM48NAd.net]
超超初心者なんですが
仮にグローバルで宣言したiがforでなく別の関数で使われることを意図していた場合
>>46のように変数iをfor文でたまたま同じ名前の制御変数としてvar宣言すると思うのですが
このときvarが付いているにも関わらずfor文のiは一行目で宣言したiとみなされてしまうってことですか?

50 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 13:37:43.55 ID:khdgfcjT.net]
>>48
JavaScriptのvarはブロックスコープの機能が無い (詳細はググるなりしてくれ)
直感的にしたければES6のletを使うしかない



51 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 13:41:16.06 ID:bHkc51Yk.net]
TSはES5ターゲットでもlet/const使えるからへーきへーき

52 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 13:42:29.90 ID:khdgfcjT.net]
>>48
いや間違えた…TypeScriptは普通にletが使えるからletを使えばいい
>>46のvarをletに書き換えるだけでうまく行くよ

53 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 13:44:14.49 ID:khdgfcjT.net]
かぶった…まぁそういう事だ

54 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 13:49:24.42 ID:DvM48NAd.net]
>>49
ああ!ifやforは関数ではないからvarつけても同名のグローバルを見に行っちゃうんですね!
そこで出てくるのがlet/constか!なっとく!

55 名前:デフォルトの名無しさん [2015/10/05(月) 00:57:09.65 ID:908hRhwN.net]
>>53
let使える前のjsの変数スコープは基本的に関数レベルだったんだよ。
rubyやpythonとかもそうだったりする。

56 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 21:21:16.18 ID:8y87T4ny.net]
1.7のissue残り3つ
そろそろ来るか

57 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 09:45:15.72 ID:cndR1OOY.net]
issueが0になってからリリースまで1ヶ月以上掛かるし
1.6がリリースされた時は1.6.2だったからもう少し先な気がする

58 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 16:42:41.11 ID:/J6P+2iK.net]
ポリモthisが待ち遠しい

59 名前:デフォルトの名無しさん mailto:sage [2015/10/23(金) 19:57:18.48 ID:uz+nJ7WP.net]
>>57
ポリモthisって変数の受け取り側で(ダウン)キャストしないで済むって事でしょ?
そんな待ち遠しいって何か便利な使い方とかあるの?

60 名前:デフォルトの名無しさん mailto:sage [2015/10/23(金) 23:22:47.24 ID:vOh1PKiJ.net]
interface IEquatable {
equals(other: this): boolean
}
とかかな



61 名前:デフォルトの名無しさん mailto:sage [2015/10/23(金) 23:33:29.49 ID:oFKlQBDH.net]
typescriptで使いやすいEditorでおすすめってなんですかね?
MS由来からいってVSなんでしょうけど、当方Macなので、、、、

62 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 11:24:42.03 ID:lLID1QIl.net]
>>60
ttps://github.com/Microsoft/TypeScript/wiki/TypeScript-Editor-Support
普段何使ってるんだよ
Vimは導入が難しいが、何するにしても特化した環境が作れるぞ

63 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 14:26:29.93 ID:otxAXsrh.net]
>>59
class Base {
getThis(): Base { return this; }
}
class Derived extends Base {
print(): void { console.log('Derived'); }
}
let derived = new Derived();
derived.getThis().print(); // 1.6.2だとBaseにprint()がねーよと怒られる
1.7だと
getThis(): this { return this; }
にする事でコンパイル通ってちゃんと実行も出来る

って事は理解したけど、equals(other: this)のthisって自分の型名のエイリアス
として使えるから便利って事であってるの?

64 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 14:31:41.39 ID:otxAXsrh.net]
>>60
Emacsと
https://github.com/ananthakumaran/tide
↑を使う事でVSに劣らないインテリセンス環境が出来上がるぞ(ページ内のscreencastを見るべし!)
ちなみに常用してるけどMac版Emacsは使った事ないから詳細は分からん

65 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 14:48:22.39 ID:otxAXsrh.net]
>>59
class Base {
equals(other: this): boolean { return other.name === "Derived"; }
}
class Derived extends Base {
name = "Derived";
}
let derived = new Derived();
console.log(derived.equals(derived));

だと、1.7でも(正確には1.7.0-dev.20151016)
test.ts(3,18): error TS2339: Property 'name' does not exist on type 'Base'.
って、ポリモらないけど…なんでなん?

66 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 16:15:55.69 ID:plgIlyg5.net]
>>63
>>61
情報ありがとうございました。結局atomに落ち着きました。
最初補完効かないじゃんとか思ってましたが、tcconfig.jsを作ったら機能したので
問題なさそうです。
emacsかvimかで言ったらvim寄りですが、設定の手間とかいろいろ考えたら
atomが一番楽です。すいません。

67 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 17:46:56.82 ID:lLID1QIl.net]
>>64
そういった使い方は無いと思うよ。その場合はジェネリックを使うといい
class Base {
equals<T extends { name: string; }>(other: T): boolean { return other.name === "Derived"; }
}

68 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 00:25:48.72 ID:1wUVsAr0.net]
>>66
https://github.com/Microsoft/TypeScript/pull/4910
このページのサンプルコードで>>64みたいなのがあったよ
>>62の戻り値バージョンは直感的で使い易いし良いんだけど
引き数バージョンがポリモらないのは何か変だなとは思う
ま、ジェネリックがあるから困らないけど1.7がちゃんとリリースされたら
また確認してみよう

69 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 07:40:54.38 ID:bIzVFZFH.net]
>>67
Baseがあとからどう拡張されるかなんてわかるわけないだろ
未来予知でもさせる気か

70 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 15:05:43.36 ID:MYRFLLoW.net]
>>68
コールの仕方がderived.equalsなんだから未来予知なんてしなくたって
コンパイル時にthisがDerivedなのが決まるでしょ (ジェネリックの場合はTがDerived)
C++は呼び出した時に型を決めてコンパイルされるからそういうのが当たり前だけど
TypeScriptはジェネリックとかも先にコンパイルしようとすんだな
とりあえずそういう仕様なのは理解したよ



71 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 20:07:24.22 ID:bIzVFZFH.net]
>>69
それは>>67のいうところの戻り値バージョンだろ
Baseの中のthisはBaseでしかない

72 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 11:50:38.96 ID:2PrT+848.net]
>>70
は?継承されたメソッドのderived.equalsでアクセスしてんのにthisがBaseなわけないだろ
お前が言ってんのは字面上の事だろ
だからC++はジェネリック(テンプレート)は呼び出された時しかコンパイルされないんだよ
TypeScriptもそうだと思っていたと先に書いただろ
equals(other: this)もジェネリックと同じようなもんだろうと思っていたんだよ
同じ事なんど

73 名前:煬セわせるな []
[ここ壊れてます]

74 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 12:01:33.27 ID:2PrT+848.net]
ちなみに>>64のコードはコンパイルエラーは出力されるが吐き出された.jsを
実行すると問題なく実行出来る
JavaScriptは動的型だから当然だけど、TypeScriptもジェネリック(とポリモthis)は
呼び出し時に毎回コンパイルした方がよりJavaScriptに近くなるとは思うけどね
(コンパイルというか型チェックだけだが)

75 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 13:14:02.12 ID:Jg07UfdQ.net]
エラーになってるのに何とち狂ってんだ
お前はもうそう思い込んでていいから他の人間に迷惑かけるなよ

76 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 13:23:02.34 ID:2PrT+848.net]
>>73
言ってる意味が理解出来ないなら無理に意味不明な返答しなくていいよ

77 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 13:29:03.77 ID:rrrZ2q/W.net]
C++のテンプレートではそうじゃないみたいだけど
他言語のジェネリクスやらパラメータ多相だと型引数T(ここで言えばthis)がnameを持つって制約がなけりゃ
other.nameとかやってる時点でコンパイルエラーになるのが普通
呼び出し側でどう呼び出されてようが知らん

78 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 13:40:49.36 ID:2PrT+848.net]
だから説明してくれなくてもTypeScriptの仕様は知ってるよ
class Base {
getThis(): this { return this; }
}
class Derived extends Base {
name = "Derived";
}
let derived = new Derived();
console.log(derived.equals(derived)); // OK:コンパイルも実行も問題ない

この場合のgetThis(): this { return this; }はBaseにあるのに型はDerivedになる
それがポリモthis
引き数版もそうだと思ったら違ったから変だなとおもっただけだ
つうか何回同じ事書かせるんだよ…

79 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 13:42:45.78 ID:2PrT+848.net]
間違えた…
> console.log(derived.equals(derived));
derived.getThis().print();

80 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 13:45:10.06 ID:2PrT+848.net]
class Base {
getThis(): this { return this; }
}
class Derived extends Base {
print(): void { console.log('Derived'); }
}
let derived = new Derived();
derived.getThis().print(); // OK:コンパイルも実行も問題ない
なんどもゴメンよ…こっちだった



81 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 15:10:36.99 ID:rrrZ2q/W.net]
class Base {
 identity(a: this): this { return a; }
}
class Derived extends Base { /*略*/ }
let derived = new Derived();
derived.indentity(derived) // => Derived
これで戻り値だろうが引数だろうがthis型の意味が変わらんのは分かるだろ

んでもうひとつ
親クラスの中で子クラスの実装に依存するような定義することがおかしいと思わんのか
テンプレートみたいにthisを具体的な型に置き換えたメソッドを実際に生成してくれるって訳じゃねーんだぞ

82 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 15:38:26.33 ID:2PrT+848.net]
>>79
> identity(a: this): this { return a; }
なるほど結局やってくれるのはキャストだけって事だな

> 親クラスの中で子クラスの実装に依存するような定義することがおかしいと思わんのか
いや別に…ジェネリックとかは
equals(other: Derived): boolean;
equals(other: Hoge): boolean;
equals(other: any): boolean { return other.name === "Derived"; }
を短く書けるってだけだぞ
やってる事はいたって普通じゃん

83 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 15:41:54.45 ID:2PrT+848.net]
equals(other: any): boolean { return other.name === "Derived"; }

よく考えたらこれで良かったなw

84 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 17:12:36.83 ID:RV+rpgqN.net]
VisualStudioでTypeScriptを始めてみたのですが加算が上手く出来ません。
数値で入力して数値で計算しているつもりですが文字列の連結になってしまいます。
以下のソースのどこかに問題がありますでしょうか?
それとも加算の時は明示的にNumberを付けるのが暗黙の了解なのでしょうか?

■index.htmlに以下を追加
<input id="id1" type="number" value="100" />
<input id="id2" type="number" value="50" />
<button type="button" onclick="MyCalc(document.getElementById('id1').value, document.getElementById('id2').value, 'id3');">Calc</button>
<p id="id3"></p>

■app.tsに以下を追加
function MyCalc(a: number, b: number, idOut: string) {
var add: number = a + b; // ←文字列の連結になる
//var add: number = Number(a) + Number(b); // ←数値の加算になる
document.getElementById(idOut).innerHTML = add.toString();
}

85 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 17:29:52.14 ID:68zEKPr/.net]
ゴミだな

86 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 17:30:24.13 ID:2PrT+848.net]
>>82
html内のJavaScriptから.ts内の関数を呼んでも型を変換してくれるわけじゃないよ
だからaもbも文字列が渡ってきてる

87 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 18:04:54.71 ID:68zEKPr/.net]
つまり、
function MyCalc(a: number, b: number, idOut: string) {
  var add: number = Number(a) + Number(b);
  document.getElementById(idOut).innerHTML = add.toString();
}
とすべきである、と。

何このゴミ言語。

88 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 18:05:52.22 ID:jZMivBq6.net]
根がjavascriptだからな
腐っておる

89 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 20:48:07.59 ID:Jg07UfdQ.net]
今日は大漁だなぁ

90 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 21:03:54.01 ID:2PrT+848.net]
>>85
MyCalcに文字列を渡してるのは理解してんの?



91 名前:82 mailto:sage [2015/10/26(月) 21:09:33.30 ID:+CoO9wxe.net]
>>84
tsの引数でnumberと指定しているところにhtmlからstringを渡してるのにエラーでないのが正常ってことですか。
なんとも言えないモヤモヤ

92 名前:した気分ですがそういうものだと思って納得します。
ありがとうございました。
[]
[ここ壊れてます]

93 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 23:08:05.78 ID:xkX95Mex.net]
そもそも今時htmlファイルにJSのコードがあるのがクソ

94 名前:デフォルトの名無しさん mailto:sage [2015/10/27(火) 10:15:27.19 ID:VNkjK7Q1.net]
>>88
> MyCalcに文字列を渡してるのは理解してんの?
誰が何を渡すなんか関係ないよ。
MyCalc()がMyCalc()たり得るためには、>>85のようにしなければならないってことでしょ。

95 名前:デフォルトの名無しさん [2015/11/01(日) 10:08:53.87 ID:zBN3V9bR.net]
ジェネリックと書かれると黒柳徹子の声で脳内再生されるw
かといってジェネリックプログラミングだと長いか。

96 名前:デフォルトの名無しさん mailto:sage [2015/11/01(日) 14:26:27.55 ID:85GIjHA4.net]
英語だとGenericsだからジェネリックスと言うべきだろうね
日本語だとジェネリックが多いけど

97 名前:デフォルトの名無しさん [2015/11/01(日) 17:47:18.14 ID:wW4dECTr.net]
>>92
うむ

98 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 20:57:38.51 ID:hYok3Gvy.net]
ゼネリック

99 名前:デフォルトの名無しさん [2015/11/19(木) 23:49:04.62 ID:xa/vi52N.net]
Microsoftのコードエディタ「Visual Studio Code」β版でオープンソース化、拡張機能で「Go」など約60言語に対応
gigazine.net/news/20151119-microsoft-visual-studio-code/

100 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 11:13:18.44 ID:SnNAjHh0.net]
>>96
ちゃんとTypeScriptで書かれてるのが確認出来たし
コーディングスタイルとか色々参考になるな



101 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 11:53:31.08 ID:9+9LvV/5.net]
>>97
なるほど。と思った。確かに生きてる教材として価値あるね。

102 名前:デフォルトの名無しさん mailto:sage [2015/11/20(金) 15:30:00.27 ID:oa4HKSA2.net]
コーディングガイドラインがTS本体と変わってるな
開発元ですらベストプラクティスが固まってないのか

103 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 14:34:32.21 ID:qZ9OT4oo.net]
VSCodeもElectron使ってるしネイティブアプリもTypeScript+Electronで作るのがトレンドなんだな

104 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 16:51:28.94 ID:7M39MrWo.net]
>>100
Electronってそんなにトレンドなの?

105 名前:デフォルトの名無しさん mailto:sage [2015/11/24(火) 18:49:02.47 ID:qZ9OT4oo.net]
>>101
トレンドってのは完全に主観だ
そもそもデスクトップアプリを作る機会があまり無いと思われる
あとブラウザで動くJavaScriptとNode.js用のコードはモジュールの問題とか
色々相容れないものがあって両対応させるのは難しい
この辺はES6のModuleが普及すれば多少は改善するのかね

106 名前:101 mailto:sage [2015/11/24(火) 22:30:19.95 ID:7M39MrWo.net]
>>102
レスありがと。
納得+同意。

107 名前:デフォルトの名無しさん mailto:sage [2015/11/27(金) 17:09:34.40 ID:/Gh9DtXn.net]
New Website Logo: Ericsson
https://github.com/Microsoft/TypeScript/issues/5801

Erlang作った会社もTypeScript使ってるんだね

108 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 23:18:53.43 ID:CBIJUaS6.net]
TypeScript Advent Calendar 2015
qiita.com/advent-calendar/2015/typescript

109 名前:デフォルトの名無しさん mailto:sage [2015/12/01(火) 01:33:36.41 ID:z2GrodUr.net]
当日になっても参加一人だけかよTypeScript終わってんな

110 名前:デフォルトの名無しさん mailto:sage [2015/12/01(火) 14:46:16.60 ID:MI9NKsx/.net]
こういうのは横の繋がりがないと人を集めるの難しそうだな



111 名前:デフォルトの名無しさん mailto:sage [2015/12/01(火) 14:52:09.64 ID:MI9NKsx/.net]
Announcing TypeScript 1.7
blogs.msdn.com/b/typescript/archive/2015/11/30/announcing-typescript-1-7.aspx

112 名前:デフォルトの名無しさん mailto:sage [2015/12/01(火) 15:22:54.15 ID:fXKlxJmK.net]
今回の機能追加はAsync/Awaitとポリモthisぐらいか
1.8も言語機能の追加は小規模だからだいぶ仕様が安定してきた感じだな

113 名前:デフォルトの名無しさん mailto:sage [2015/12/01(火) 15:32:51.36 ID:fXKlxJmK.net]
TypeScriptはその名の通りJavaScript+型なんだからTypeScript固有の話題なんて
もうそんなにないだろ
最新の話題は>>108のブログ

114 名前:セけ見てれば十分
言語機能を詳しく知りたい場合は公式のHandbookがスゲー良く出来てるからそれで十分
[]
[ここ壊れてます]

115 名前:デフォルトの名無しさん mailto:sage [2015/12/02(水) 00:09:29.85 ID:et2ufdl8.net]
コンパイル速度遅くなってきたらしいな
さもありなん

116 名前:デフォルトの名無しさん mailto:sage [2015/12/05(土) 15:39:17.84 ID:m9DZhLZL.net]
実際アプデしたらクッソ重くなってた
IDEがプチフリして困る

117 名前:デフォルトの名無しさん mailto:sage [2015/12/06(日) 02:00:29.98 ID:FcGW3Qzp.net]
>>108
TypeScript 1.7.3 変更点
qiita.com/vvakame/items/0441f248b349eba9e267

118 名前:デフォルトの名無しさん mailto:sage [2015/12/06(日) 22:16:12.04 ID:NQ6kkq7S.net]
Microsoft、「Edge」のJavaScriptエンジン「Chakra」をオープンソース化へ
www.itmedia.co.jp/news/articles/1512/06/news012.html

119 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 13:43:53.13 ID:sEPoyyCj.net]
>>113
間違いとか中途半端な内容が多いな
取り合えず 2 ** 3 は 2 * 2 * 2 に展開される
整数同士は掛け算に展開して浮動小数点数は Math.pow() を使うようになる
要するに整数のべき乗を整数のままにしておけるという事だな

120 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 15:25:18.45 ID:sEPoyyCj.net]
>>115
少し補足
右側が変数になってる場合も Math.pow() になった



121 名前:デフォルトの名無しさん mailto:sage [2015/12/10(木) 23:32:50.70 ID:V7ddkloI.net]
3.14 ** 3 は 3.14 * 3.14 * 3.14 にするよりも pow のほうが早いのか

122 名前:デフォルトの名無しさん [2015/12/11(金) 00:19:45.18 ID:5K+qhLiA.net]
>>117
どうでもいいけどπを3乗するなんて事は無いけどな
ルートの中に入ることはある

123 名前:名無しさん@そうだ選挙に行こう mailto:sage [2015/12/14(月) 18:49:41.54 ID:R3y1X6jx.net]
www.typescriptlang.org/Playground
以下のコードが実行時エラーになる
意図したものなのかな

function f() {
 const Math = void 0;
 console.log(2 ** 3);
}
f()

124 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 13:48:49.14 ID:uFHp5xJr.net]
>>119
const Math = void 0;
だとMathがany型になってるからそもそも何やってもコンパイルエラーにはならない
const Math = 1;
console.log(Math.pow(2, 3));
だとコンパイルエラーになるが
console.log(2 ** 3);
がコンパイルエラーにならないのはバグだな

ちなみに1.7のプレリリース版だと2 ** 3は2 * 2 * 2に展開されてた気がするが
1.7.3だと無難にMath.pow(2, 3)のままだな…

125 名前:デフォルトの名無しさん mailto:sage [2015/12/17(木) 17:40:37.59 ID:z/Lx0cXl.net]
typescriptを書くときの環境みたいなのを教えてください
そういう記事があったら教えてください
webpack?とかpackage.txtとか開発初めのスケルトンが知りたいです

126 名前:デフォルトの名無しさん mailto:sage [2015/12/17(木) 19:05:38.17 ID:Szn4FINI.net]
VisualStudio
Azure

127 名前:デフォルトの名無しさん mailto:sage [2015/12/17(木) 22:15:57.04 ID:CSxzQpIQ.net]
まずエディタを何使いたいかによるな
何でもいいなら無難にVS使うのがいいと思われる
最近ならVisual Studio Codeの方がいいかもしれない

128 名前:デフォルトの名無しさん mailto:sage [2015/12/18(金) 17:31:03.70 ID:uEIUGuN6.net]
VSCodeは.git/とtsconfig.jsonが同じフォルダなのが前提だな…
そうでない場合も多い気がするけどな
ちょっと試用してみたけど上記の問題以外はTypeScript用エディタとして快適に使える

129 名前:デフォルトの名無しさん mailto:sage [2015/12/18(金) 18:00:03.96 ID:eorQTm9j.net]
VSCodeに移行したいけどvimが未完成すぎてまだ移行できん
はよVSと同じクオリティに仕上げてくれ

130 名前:デフォルトの名無しさん mailto:sage [2015/12/18(金) 19:49:07.87 ID:HYHORn7l.net]
おもいっきりスレ違いだけどVSCodeの完成度の高さにびっくり
golang開発環境としても最適。マイクロソフトの開発力の高さを目撃したぜ。
一気にATOMより使いやすくなりやがった。
typeScriptも期待していいね



131 名前:デフォルトの名無しさん mailto:sage [2015/12/18(金) 20:01:03.80 ID:uEIUGuN6.net]
VSCodeの完成度の高さの半分はTypeScriptで作ってるからと言えなくもない
残りの半分はGoogleのChromiumとV8のお陰だが…

132 名前:デフォルトの名無しさん mailto:sage [2015/12/19(土) 01:32:25.74 ID:AUMngiLG.net]
最近のマイクロソフトはC#と並んでNode.js推しが凄いね
次期ASP.NETのビルドシステムもNode.js系
Node.jsの普及に社運をかけているような感じがする

133 名前:デフォルトの名無しさん mailto:sage [2015/12/19(土) 06:11:40.64 ID:2wysK+Et.net]
MSは自社のJavaScriptエンジンがあるから別にNode.jsを推してるとは思えない
単にNode.jsを使わざるを得ない状況ってだけじゃないかな
現状色んなアプリが別個にNode.jsのランタイムを含めてて無駄過ぎるから
WindowsだったらEdgeとかChakraを使うバージョンがあってもいいと思う

134 名前:デフォルトの名無しさん mailto:sage [2015/12/19(土) 08:29:23.06 ID:2BX5Ngj+.net]
MS自身自社プロダクトのクロスプラットフォーム化を進めてるのにそんな逆行したいわけがない

135 名前:デフォルトの名無しさん mailto:sage [2015/12/19(土) 13:18:54.15 ID:2CKHjxE+.net]
Node.js はオワコンなのにね

136 名前:デフォルトの名無しさん mailto:sage [2015/12/19(土) 15:19:47.28 ID:2BX5Ngj+.net]
持ち上げられすぎてると思うけどそこまで終わってもない
それよりエレクトロンがモノになるかのほうが不安

137 名前:デフォルトの名無しさん mailto:sage [2015/12/19(土) 17:24:55.88 ID:saKWMtLf.net]
chakra対応のnode出したりcoreをossにしたりでv8で満足してるわけでもなさそう

138 名前:デフォルトの名無しさん mailto:sage [2015/12/20(日) 03:32:05.22 ID:3pTsyfVL.net]
>>131
Node.jsがオワコンとか初めて聞いたよw
JavaScriptが標準規格だから実装が何になろうがいいけど
今のところNode.js以外の使い易い実装がないのが現実
まさかとは思うけど>>131はio.jsの事を言ってたりするのか?

139 名前:デフォルトの名無しさん mailto:sage [2015/12/20(日) 19:25:20.77 ID:oiJlcETb.net]
オワコンかどうかはわからないけど、jsフロントエンド周りは
変化が早すぎてついていける人が少ないのは確か。
ビルドツールすらなんでそんな変わっていくん?
いっそmakeでいいんじゃないか。

早くデファクトスタンダードでてくんないかな。
Meteorは完全にjs界から見放されているような気もする。(日本だけ?)

140 名前:デフォルトの名無しさん mailto:sage [2015/12/20(日) 22:47:15.85 ID:ZI2XTWWE.net]
GUIツールや、ビルドツール、SSRあたりは残るんじゃないかな。
apiサーバやさらにバックエンドは今より減っていきそうだけど。



141 名前:デフォルトの名無しさん [2015/12/21(月) 11:04:35.60 ID:1HvlxK+M.net]
Dartがもう少し頑張ってくれてりゃなぁ

142 名前:デフォルトの名無しさん mailto:sage [2015/12/21(月) 11:44:53.03 ID:+DAq0mOu.net]
よくAltJSの括りでDartとかと一緒にされるけどTypeScriptはDartと別モンだと思う
TypeScriptは9割は(特にES6以降の)JavaScriptといっても過言じゃないけど
Dartは全然別の言語だし
Webの世界でJavaScript以外の言語が流行るとは全く思えない

143 名前:デフォルトの名無しさん mailto:sage [2015/12/21(月) 14:21:33.13 ID:1HvlxK+M.net]
javascript無くなってくれないかな
TypeScriptが橋渡しになって引導渡して欲しい

144 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 16:53:14.82 ID:YbqFKYTK.net]
>139
それはつまり「IEもChromeもFirefoxもSafariも、既存サイトのJavaScriptを解釈しないようにしろ」ってことだろ
無理だな

145 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 21:21:43.04 ID:Gmfz59Yf.net]
>>139

なんかgoogleとかmozilaとかが共同でバイナリをBrowserで動かす仕組みを
開発するとかいってなかったっけNaCLじゃない奴。
それが実現したらそうなるんじゃない

146 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 22:12:53.38 ID:VUxrNHJY.net]
>>141
WebAssemblyだな
主目的はC++のコードを安全にかつネイティブ並に高速に動かす為のものだ

147 名前:
他の言語を動かす基盤にも十分成り得る

ただ現状でもJavaScriptに変換すれば似たような事にはなってるのに
他の言語が流行ってないから結局今と一緒でしょ
[]
[ここ壊れてます]

148 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 23:08:22.22 ID:0c+BTX7l.net]
JavaScriptでは難しい最適化を施した多言語から生成できる共通の中間コードの仕様策定だっけ?
デバッグが難しいだろうからほとんどCPUヘビーなとこと広告回避にだけ使われてほかはJavaScriptのままだと思うよ

149 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 23:29:17.65 ID:37J5CESF.net]
>>143
基本ゲーム用だ
WebGL2になるとPS3以上PS4未満の能力があるからWebAssemblyと組み合わせて
ブラウザをゲームプラットホームにしようという思惑がある

150 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 23:51:10.03 ID:0c+BTX7l.net]
>>144
マジかよソニー株売ってくる



151 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 23:52:52.11 ID:YbqFKYTK.net]
>144
それChromeBook持ってるGoogleの一人勝ちになるんじゃないか

152 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 23:57:52.58 ID:0c+BTX7l.net]
日本一みたいな小粒の尖ったソフト出すメーカーはこういうのでコストかけずにどんどん出していったほうがいいんだろうな

153 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 02:26:54.28 ID:87NUqkxQ.net]
TypeScript1.8以降で追加予定または協議中の注目の新機能12つ
falsandtru.hatenablog.com/entry/typescript-2016

154 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 10:26:24.39 ID:qQE0KVCc.net]
noImplicitReturns最高

155 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 13:17:18.21 ID:zNppH846.net]
1.7でも戻り値の型が違うとエラーになるけどnoImplicitReturnsの説明見ると
結構すり抜けるパターンがあったんだな…
全部undefined関連だけど最初からエラーにしとけよ

156 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 13:34:53.88 ID:zNppH846.net]
あとreadonlyはなぜ
function hoge(readonly a: number) { }
と書けないんだよ…
メンバーより引き数に指定出来る事の方がはるかに重要だ

他は劇的に便利になるようなものはないな

157 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 14:43:14.41 ID:ISLz7uba.net]
うんこの上に金粉まぶしてもうんこはうんこ

158 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 15:03:46.23 ID:9XEpf0Yk.net]
>>151
numberにreadonlyを指定することは意味がないと思うが…

引数がreadonlyであることを表明したいなら
そういうinterfaceを定義すれば済む。現行機能で十分じゃないか?
指定子で表明するのはC++がconstで失敗した道だからなぁ

159 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 17:02:40.14 ID:zNppH846.net]
>>153
あー無意味なこと書いてしまった…numberじゃなくて何らかのクラス名だった

ちなみに
function test(readonly v: Data/*参照しかしない事を表明*/): boolean { }
をしたいだけなのに
function test(v: {readonly x: number, ...全部書くのか?): boolean { }
とすればいいという事か?

160 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 17:36:17.11 ID:9XEpf0Yk.net]
>>154
「特定のメンバーしか見ない」と表明したいならそうなるんだろうね
もしくは最初からインタフェースを分けておくか
interface ReadOnlyData { get; }
interface Data extends ReadOnlyData { set; }

単純なフィールドの読み書きだけならいいけど
getXXX() は readonly だよねとか
getXXX() の中でキャッシュ値が変化するけど実質的には readonly だよねとか
やりだすと、C++の悪夢がよみがえってしまう



161 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 18:43:03.80 ID:zNppH846.net]
>>155
そりゃ悪夢だろ
なんでクラス定義する側がそんな苦労しないといけないんだ
ちなみに
class Hoge {
int getXXX() const;
mutable Cache cache;って知ってるか?
こうしておけば何か気にする事なんてあるか?

162 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 18:47:18.76 ID:zNppH846.net]
補足
class Hoge {
int getXXX() const; ← これはcacheの中身は書き換える
mutable Cache cache; ← これが書き換わってもconst性に影響無いと考える

163 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 23:14:17.73 ID:b7pvx0AF.net]
>>153
何が失敗だったの?
C++でconst無かったら怖くてかなわん…

164 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 23:40:33.36 ID:DXbDvcZw.net]
>>151
利用する側に重要な情報だよな。

165 名前:デフォルトの名無しさん mailto:sage [2015/12/26(土) 00:31:22.25 ID:iwceh6a5.net]
C++でconstに問題あるなんて素人のたわごとだろ
聞いたこと無い

166 名前:デフォルトの名無しさん mailto:sage [2015/12/26(土) 00:39:17.52 ID:iwceh6a5.net]
C++で仕事を15年以上して凄い奴とかどうしようもない奴とか色々見てきたけど
constに問題があるとか初めて聞いたよ

167 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 02:41:33.95 ID:cehhvXHA.net]
VSCodeがいつの間にアップデートしてて>>124の問題が早速修正されてるな
オプソにした事でユーザーが増えて沢山突っこまれたに違いない
もはやTypeScript最強エディタと言わざるを得ない

168 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 02:55:10.34 ID:cehhvXHA.net]
最近やっとNode.jsとブラウザの両方で使えるコードの書き方が分かったよ
TypeScriptオンリーだったらtsc --module amdとrequire.jsがあればいいし
JavaScriptを使う場合はwebpack使えば出来た

俺はTypeScriptの時でもリリース時にwebpack使って開発中はrequire.jsで
個別にファイルを読み込んだほうがデバッグしやすいからそうしてる
ちなみに///<reference path='hoge.ts'/>とかmoduleやnamespaceは全く使わない
それが今のトレンド (VSCodeのソースがそうしてる)

169 名前:デフォルトの名無しさん [2015/12/29(火) 16:10:58.92 ID:O/+FVQhq.net]
そりゃそうだ

170 名前:デフォルトの名無しさん [2016/01/03(日) 18:07:55.32 ID:CSCP9BIo.net]
だれかわかるやつ教えてくれ...

親クラスのstaticメソッドを子クラスでoverrideすると、
実行していない状態でもなぜか親クラスのstaticメソッドが実行されてしまうんだが、これはなぜなんだ...

一応ソースだけ張ってみる。


/// <reference path=



171 名前:デフォルトの名無しさん [2016/01/03(日) 18:14:12.59 ID:CSCP9BIo.net]
すまんこれ

s1.gazo.cc/up/169919.png

172 名前:デフォルトの名無しさん mailto:sage [2016/01/03(日) 23:49:46.81 ID:4W+1xUXu.net]
>>165
ecmascriptの方の話?
https://github.com/google/traceur-compiler/blob/master/src/runtime/classes.js

173 名前:デフォルトの名無しさん [2016/01/04(月) 00:03:32.03 ID:tFJ0VkMO.net]
>>167

おお、ありがたい。
明日ちょっと見てみるわ。

どうもextendsするときに実行しちゃっているみたいだから、そういう仕様なの?とも思ったんだがいまいちわからんくて...
コンパイル結果のjsも明日張ってみるわ

今日はもう寝る

174 名前:デフォルトの名無しさん mailto:sage [2016/01/04(月) 09:26:22.97 ID:B4Y3MO4F.net]
>>168
console.log(Asian.name);
console.log(Asian.name = "New type");
console.log(Asian.name);

nodeだとname propertyは再定義できないと言われるが

175 名前:デフォルトの名無しさん mailto:sage [2016/01/04(月) 12:16:27.68 ID:WW+fICsN.net]
>>166
これはおもろいw
--target ES5のクラス継承は__extendsでいわゆるクラスを模したイディオムを
実行する訳だけど、その時にHuman.nameを読み出してるからその中で
console.log()みたいな副作用のあるコードを書いてるとちょろっとお漏らし
しちゃうんだな
ま、getに副作用のあるコードを書くなって事だな
副作用が無ければ気にする事はない

176 名前:デフォルトの名無しさん [2016/01/04(月) 21:24:41.15 ID:tFJ0VkMO.net]
これが生成されたJS
改行多すぎで書き込めないから二つに区切る。

var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object

177 名前:.create(b) : (__.prototype = b.prototype, new __());
};
var Human = (function () {
function Human() {
}
Object.defineProperty(Human, "name", {
get: function () {
console.log("Human class name");
return "homo";
},
enumerable: true,
configurable: true
});
return Human;
})();
[]
[ここ壊れてます]

178 名前:デフォルトの名無しさん [2016/01/04(月) 21:25:29.78 ID:tFJ0VkMO.net]
var Asian = (function (_super) {
__extends(Asian, _super);
function Asian() {
_super.call(this);
}
Object.defineProperty(Asian, "name", {
get: function () {
console.log("Asian class name");
return "ass";
},
enumerable: true,
configurable: true
});
return Asian;
})(Human);
console.log(Asian.name);

2行目でpが"name"のときに、d[p] = b[p]としてる部分で起きてるっぽい? get の functionを代入しているような気がするんだけどダメなんだなぁ

179 名前:デフォルトの名無しさん [2016/01/04(月) 21:27:50.70 ID:tFJ0VkMO.net]
>>170

なるほど、やっぱり一応「仕様」なのね。

visible-true.blogspot.jp/2013/01/typescript-bridge-pattern.html
ここを参考に抽象クラス書いてみようとしたら毎回エラーになったのがきっかけで気づいたんだ。

普段は副作用のないコードを書くようにしてるから問題ないけど、気持ち悪いな...

180 名前:デフォルトの名無しさん mailto:sage [2016/01/04(月) 21:29:44.16 ID:jSUxRRs2.net]
console.log(Asian.name);
をもう一度実行



181 名前:デフォルトの名無しさん [2016/01/04(月) 21:58:10.67 ID:tFJ0VkMO.net]
>>174
最後のconsole.log(Asian.name); をふたつにするってこと?

↓こうなるだけだけど...そうじゃなくて?

Human class name
Asian class name
ass
Asian class name
ass

182 名前:デフォルトの名無しさん [2016/01/04(月) 22:06:12.44 ID:tFJ0VkMO.net]
>>172
うぉお自己レスだがいまさら理解
definePropertyにアクセスするとgetのfunctionが実行されるから、
extendsのときの代入で実行が走ってるのね

超すっきりしたわ
なるほどね

183 名前:デフォルトの名無しさん [2016/01/04(月) 22:18:27.58 ID:tFJ0VkMO.net]
いやまてこれダメじゃねーか
getterちゃんと継承できてねーぞ

...できてねーよな?

184 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 00:16:07.40 ID:JRpiyNmr.net]
上書きしなきゃ親のが呼び出されるでしょ

185 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 04:38:20.48 ID:uTMnp3Vg.net]
https://github.com/Microsoft/TypeScript/issues/1520

存在しないユースケースだから修正しない。
使いたければ__extends関数を自作してオーバーライドしろとさ。

186 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 13:11:51.67 ID:FYDa5kHc.net]
>>178
継承されてないな

まず最初に言っておくけどAsian内のgetを消すとAsian.nameは
Function.nameにアクセスする事になってAsianと表示されるからfuncとかにしておく
そうするとhomoとだけ表示されてHuman class nameは表示されないから継承されてない

ちなみに--target ES6の場合はconsole.log('Human class name');が実行されて
なおかつ継承もされない
要するに現状でES6と同じ挙動という事になるから自前の__extendsを作ると
将来ES6でコンパイルした時に困る事になる (継承をカスタマイズ出来ないし)

現状で問題の無いコードを書くしかないというのが結論だな

187 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 13:24:39.62 ID:FYDa5kHc.net]
ES6のclassは__extendsでやっている事のシンタックスシュガーだってのが
分かるおもしろい例だった
結局ES6になってもプロトタイプベースのオブジェクト指向っていうところは
変わってないんだよね

188 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 08:53:19.05 ID:Fwd934PG.net]
>>179
神だ、やっと神と、、、!
ありがとう!

ユースケースがないってのはちょっとひっかかるけどな。
キーワードstaticってクラスに属してるだけでstatic getが副作用を起こさない、他の影響をうけないって保証されてるわけじゃないし。
そう書けってことではあるんだけどね。

189 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 13:03:11.26 ID:ELUPuNqk.net]
MSYS上のvimからtsuquyomi使えんかった
多分Nodeがマウントされたパスとか/c/から始まるパスを理解できないんだろうな
MSYS版Nodeがあればなぁ

190 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 1 ]
[ここ壊れてます]



191 名前:7:46:53.97 ID:ELUPuNqk.net mailto: よく見たらmingw側にNodeがあったので試してみたけどバージョンが古いせいか駄目だったぜ
TypeScript書くときは大人しくGVimにしておくか
[]
[ここ壊れてます]

192 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 13:05:16.12 ID:yW17RJ8f.net]
ChakraCoreを使ったNode.jsが動いたらしい
しかし最近のMSはプロジェクト名にCoreを付けまくってるな

193 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 10:08:20.25 ID:ym0h+5An.net]
--module commonjsの状態でmoduleとnamespaceを使わずに
export function ...
export var ...
って書いたソースがcommonjsのモジュールとしてコンパイルできるのに
外部からimportしようとするとモジュールが見つからないって怒られて困った
--module amdだと大丈夫みたいなんだけど、バグだったりするの?

194 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 12:35:34.21 ID:xXuhphCo.net]
公式のwiki読め

195 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 17:32:00.25 ID:ym0h+5An.net]
import時のパスが./で始まるかどうかの違いでした
import * as test from "test"; // amdはOK, commonjsはエラー
import * as test from "./test"; // amd, commonjs 共にOK
test.tsを./node_modulesに突っ込んで--moduleResolution nodeなら前者もOK

196 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 10:30:33.12 ID:jiNDRvMm.net]
必読https://github.com/Microsoft/TypeScript/wiki/FAQ

197 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 13:40:35.40 ID:ipEE3CyC.net]
TypeScriptのモジュールの扱いが激烈に難解になったからみんなハマルだろうな
俺は大体理解できたけど

198 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 13:50:19.91 ID:FKcC8XYP.net]
苦笑

199 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 14:01:32.82 ID:ipEE3CyC.net]
>>191
そんなおかしいなら --moduleResolution の意味を言ってみてよ

200 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 14:05:44.07 ID:ipEE3CyC.net]
>>191
あと、 --moduleResolution node で認識される*.d.tsの書き方も言ってみてよ
これドキュメントに書いてないんだよな



201 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 14:22:21.52 ID:ipEE3CyC.net]
qiita.com/vvakame/items/72d22e33632178f7db24
この人の↑これを見るのが一番まとまってて分かり易い
> ・declare module "hoge" 形式の定義は利用できない
って書いてあるけど実際はもう少し修正しないと駄目だった
とりあえず適当に修正すれば通るように出来るけど何が問題なのか
ドキュメントが見つからず確証が持ててない

202 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 17:21:06.80 ID:FKcC8XYP.net]
みんなはcommonjs使うからハマらないっての
クイズじゃなくて何がしたくてできないのかのほうを書けよ

203 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 19:30:10.53 ID:ipEE3CyC.net]
>>195
>>194の話はcommonjsとか関係無いよ、モジュール全般の話でしょ
それにブラウザからcommonjsロードできないのにみんな使うってのはおかしいでしょ

204 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 21:26:21.10 ID:FKcC8XYP.net]
貴殿の力量、拝察して候

205 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 10:19:05.81 ID:kKfPXzbs.net]
JavaScriptから来た人には歴史的経緯と後付モジュール機構は常識の部類なんだろうけど、他言語からくるとjs/tsのモジュール関係は病んでるよな

206 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 14:10:10.49 ID:pw0cS8Zr.net]
>>197
最後にはそれかよw
ちゃんと具体的に書いてくれないと完全に負け惜しみにしか聞こえないよ

207 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 14:24:44.17 ID:pw0cS8Zr.net]
>>198
TypeScriptには内部モジュール(内部は造語)があって外部モジュールについては
あまり重要視されてなかった経緯があるからね
module→namespaceって名前を変えたけどmoduleキーワードは今も使える
もはや混乱の元でしかないし<<<reference file="hoge"/>ももはや役割を終えてるからなくした方がいいな
で、importの意味が1.6でしれっとそれより前の解釈と思いっきり変わってしまったのが混乱の元だ
とりあえずVSCodeのソースを見れば最近の*.tsの書き方が分かる
俺はそれ見て同じ書き方をしようとしてmodule,referenceから移行しようとして
importがトンでもない事になってる事にやっと気付いた

208 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 14:38:18.32 ID:HDdwtYdo.net]
requireからES6 modulesまでの変遷は確かに知らずに見ると混乱する
NodeのStreamAPIと違ってES6 modulesで古い情報にフィルタかけられるのが救い

209 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 15:03:49.80 ID:pw0cS8Zr.net]
>>197みたいにNode.jsオンリーで歴史的経緯も知らずにnpm installだけして
使ってる人にはimportでハマルとか言ってる奴はプッっとしか思わないんだろうね
ま、そういう奴が居るって事は1.6の変更は意味があったといえる

俺は1.0ぐらいからブラウザ用にmodule,referenceでゴリゴリ書いてたから
移行するのがスゲー大変だった
しかし、お陰で汎用的な機能はNode.jsとブラウザの両方で使えるように
書けるようになったから移行する意味はあった(それにES6のmoduleにも対応してるはず)

210 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 12:12:11.54 ID:ChRzt0VQ.net]
webpackとか使うとjsの場合以下のようにtemplateとしてhtmlコードを取り込むことができますが、

```
export default {
template: require('./index.html'),
}
```

typeScript単体で使う場合で似たようなことをする方法ってありますか?



211 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 14:52:35.66 ID:H1ToiAO7.net]
>>203
1.6からjsxに対応したからとりあえず typescript jsx で検索してみなよ
それが目的のものかは分からんけど

212 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 14:25:20.13 ID:EB80mx/+.net]
https://twitter.com/bterlson/status/692489384654999552

ES2016 will likely not contain async functions.

213 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 17:10:41.49 ID:LlSYvxYC.net]
安心してください、TypeScriptはasyncが使えます

214 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 16:04:12.96 ID:7HipHDXr.net]
TypeScript 1.8ベータにはJavaScript統合、シームレス関数コンポーネントなどが追加される
www.infoq.com/jp/news/2016/02/announcing-typescript-18

215 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 01:27:25.39 ID:Krz+De6m.net]
>>207
Announcing TypeScript 1.8 Beta
https://blogs.msdn.microsoft.com/typescript/2016/01/28/announcing-typescript-1-8-beta/

TypeScript 1.8.0-beta 変更点
qiita.com/vvakame/items/31f5c45ff49de67d5634

216 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 11:57:21.91 ID:tB/7lfI+.net]
typeScriptでつくられたOSSなプロダクトって何があるのかな。
typeScriptの勉強に使えそうな手軽なサイズのものがいいんですが
特にVSC以外で

217 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 12:46:41.49 ID:whWT7zC/.net]
vs版1.7.6を入れたのにバージョン情報では
1.7.5と表示されるんだけどミスってる?
npm installでも1.7.5だった

218 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 21:36:59.74 ID:tB/7lfI+.net]
typeScriptでWebWorkerのコードを書こうとするとpostMessage関数で怒られるんです。

onmessage = function(e) {
console.log('Message received from main script');
var workerResult = 'Result: ' + (e.data[0] * e.data[1]);
console.log('Posting message back to main script');
postMessage(workerResult); //<―ここ
}

error TS2346: Supplied parameters do not match any signature of call target.

パラメータがあってないって話なんですが定義を見てみると
declare function postMessage(message: any, targetOrigin: string, ports?: any): void;
とありtargetOriginが必要みたいな記述になっています
定義の参照先が違うせいだと思うんですが直し方がわかりません。ご教示下さい

参考
https://developer.mozilla.org/ja/docs/Web/Guide/Performance/Using_web_workers

219 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 22:34:57.47 ID:0bFQuZrs.net]
ES以外の定義が違うなら自分でプルリク出さないと直らないぞ
DOM周りは基本放置だからな

220 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 23:19:19.89 ID:DcD4rrQS.net]
1.7.5に入ってるlib.webworker.d.tsには
WorkerインターフェースにpostMessage(message: any, ports?: any): void
グローバルにpostMessage(data: any): void
ってなってるけど



221 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:50:38.42 ID:SL3t4ard.net]
>>213
先頭行に
/// <reference path="lib.webworker.d.ts" />
と入れてもエラーが出るんですが、どうすればいいんでしょう

error TS6053: File 'lib.webworker.d.ts' not found.

222 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 16:34:47.12 ID:DMjW/lz+.net]
https://developer.mozilla.org/ja/docs/Web/API/Window/postMessage
https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage
を見ても第2引数は必要
引数要らないバージョンは
https://developer.mozilla.org/en-US/docs/Web/API/MessagePort/postMessage
のMessagePort用だな

223 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 16:42:47.45 ID:DMjW/lz+.net]
いや間違えた…
window.postMessage以外は第2引数が省略可能だな
ただwindow.postMessageも第2引数を省略すると"*"が指定された時と同じ動作をするように
ブラウザが勝手に対応してるっぽいな
格オブジェクト毎に微妙に役割りが違うものを全部一緒くたにpostMessageにしてるから
結構ややこしい事になってるな…
とりあえず>>214はwindow.postMessageを使ってるのであれば
第2引数に"*"を指定すればいいはずだよ

224 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 16:44:08.08 ID:DMjW/lz+.net]
格オブジェクト→各オブジェクト 念の為…連投スマン

225 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 17:00:54.46 ID:DMjW/lz+.net]
何度もごめん
やっと本質が理解できた
根本的な解決には2.0にならないとダメらしいな
それまではpostMessageには"*"とかundefinedを指定して誤魔化すのが一番手っ取り早い

226 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 10:23:55.62 ID:+Fbk6tbu.net]
いえ。聞きたいことは
golobalscopeの参照先を lib.webworker.d.ts
にしたいわけです。

```
new Wroker(“./worker.js”); // <―ここのworker.js内のグローバルスコープをなんとかしたい
```
上記のように別スレッドでwroker.jsを動かすわけですけど、
worker.js内のグローバルスコープはdocumetにアクセスできなかったり独自のものみたいです。
それで参照先を lib.webworker.d.tsにしたくて/// <reference path="lib.webworker.d.ts" />としても
ファイルがないと怒られます。
typescript自身が持っているd.tsファイルに対してのリファレンスの貼り方を教えていただきたいのです。

227 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 10:35:21.09 ID:wvAk6z1k.net]
>>219
https://github.com/Microsoft/TypeScript/wiki/Roadmap
の2.0にあるImprove lib.d.ts modularityがそれを簡単にやる為のものらしい
要するに今のところそういう事が簡単に出来無いってこと
blog.scottlogic.com/2015/08/10/ts-vs-proj.html
この辺に一応回避方法が書いてあるよ

228 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 13:52:50.82 ID:+Fbk6tbu.net]
>>220
情報ありがとうございます。
とりあえず

```
(<any>postMessage)(workerResult);
```
と書いてエラー抑制で回避することにします。

229 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 17:38:32.66 ID:lb9byLOu.net]
いい方法が見つかるまではtsconfig.jsonの"files"にlib.*.d.tsのパスを入れておけばいいよ
tsconfig.jsonの書き方と使い方は公式Wiki参照

230 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 17:13:14.79 ID:YBiR9mLr.net]
NonNullableきたこれでかつる



231 名前:デフォルトの名無しさん [2016/02/23(火) 10:35:12.67 ID:6s2CAaJ0.net]
Announcing TypeScript 1.8
https://blogs.msdn.microsoft.com/typescript/2016/02/22/announcing-typescript-1-8-2/

232 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 11:46:00.00 ID:UPC5owG9.net]
>>224 おつ
TypeScript for Visual Studio 2015 は Details > Releases から 1.8.4 を選ばないと
以前のものがダウンロードされるので注意。

あと Visual Studio Code のインテリセンス等の挙動は
tscへのパスの差し

233 名前:ヨえだけでは完璧ではないぽい。なにか方法があるかもしれないが []
[ここ壊れてます]

234 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 12:25:15.11 ID:MgSDdSDU.net]
VSCodeは自前でtsserver.jsを持ってるからそれを差し替えないと駄目でしょ
下手に差し替えないでバージョンアップを待てばいいんじゃね?
すぐするでしょ

235 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 12:28:20.34 ID:MgSDdSDU.net]
ちなみにメインで使ってるわけじゃないけど、なんかVSCodeって使いづらいような気がしてきた
バージョンアップで改善されてくとは思うけど、メインで使ってる人は使い心地がどうなのか知りたい

236 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 19:37:32.88 ID:cGyLx1gy.net]
for (let i = ...) は許されるのに
if (let o = ...) や while (let ...) が許されないのは仕様でしょうか?
nullスキップをしたいときにこの書式を使いたい場合が結構あるのですが

237 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 21:55:18.34 ID:aRwJuOw8.net]
仕様。仕様書見れば書いてあるよ
let o;
if (o = ...) と書いても結果は変わらないと思う
o がブロックの外に漏れるというだけで

238 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 23:27:54.96 ID:cGyLx1gy.net]
>>229
元のJavaScriptや、もしかするとJavaに倣った仕様なんですかね
どうせJavaほど真偽判定に厳しくないんだから、C++並に緩くして欲しいなぁ

239 名前:デフォルトの名無しさん mailto:sage [2016/02/25(木) 10:03:46.85 ID:pumiDuUu.net]
>>230
仕様ってのはecma262(JavaScript)の事ね
TypeScriptはJavaScript(主にES6以降)+型だからJavaScriptの文法を壊すような
機能追加はしちゃ駄目だと思うし、そういうのはほとんど無いと思う

240 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 15:07:54.17 ID:RrjC3Y1y.net]
chrome extensionの開発にtypeScript使っています。
型があるとドキュメントを見なくてもメソッドとかプロパティを探せるので
捗ります。

本当にES2015 + type って感じなんですね。そんなに仕様が分かっていなくても何となく使えるのがいいです。

一つお聞きしたいのですが
Node型からlengthプロパティを使いたいのですが
参照先にlib.d.tsにはないみたいでエラーなります。
chromeデバッカでは見えているのですが、、、
とりあえず以下のように回避しているんですが

const selection = window.getSelection()
(<any> selection.focusNode).length

本来の対応方針を教えて下さい。
例えばどこかに専用のファイルを作ってそこで
interface Node {
}
自分用のinterfaceを作るとかですかね?



241 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 15:39:48.75 ID:tDWJCpRY.net]
>>232
Node.length って何? すべての Node は持っているわけではないと思うが
エレメントの種類が限定できるなら <any> のところにそのクラス名を書けば?

242 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 17:00:58.63 ID:RZS145YN.net]
babelとtypescriptって何が違うの?
あとes6が普及したらtypescript使う意味ってなくならない?

243 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 17:04:13.70 ID:RrjC3Y1y.net]
>>233
すいませんでした
lengthプロパティはNodeインターフェースにあるのが正しいのかと勘違いしてました。
Element型にキャストして使うことにしました。

244 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 17:11:25.26 ID:RrjC3Y1y.net]
>>234
ES2015 + 型という図式です。
VSCとかと連携すると補完が聞いて素敵です。
EcmaScriptに型が付く予定はないと思うので差別化はできているのではないでしょうか?

逆に言語として学習コストが低くていいのではないかと(ES2015とあんまり変わらない点)。
特に新規のライブラリを使うときはEditorが教えてくれるので、凄くいいです。

245 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 17:29:33.07 ID:tDWJCpRY.net]
>>235
Element型にもlengthってあったっけ…

>>234
es6が普及した場合、むしろBabelがその役割を終える

TypeScriptと競合するのは、JSDocの型注釈 @type かな
JS+JSDocの

246 名前:記述量を減らしたのがTypeScriptだと思う []
[ここ壊れてます]

247 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 18:49:06.70 ID:9M5RRL5I.net]
>>235
ちゃんとリファレンスは読んだのか?
https://developer.mozilla.org/ja/docs/Web/API/Selection

248 名前:デフォルトの名無しさん mailto:sage [2016/03/04(金) 16:37:36.83 ID:5mk497Pl.net]
ちなみにjQueryでDOMをいじくるのが主な目的の人には向かないね
jquery.d.tsがany使いまくりだから素直にJavaScriptをそのまま使う事を勧める

それとDOMはJavaScriptとして使ってる内は気付かないけど
実はかなり型が複雑で理解してないと>>232みたいな問題にぶつかる
悪いのはTypeScriptではなくて元の仕様がそうなってる

直接DOMをいじる場合も型をちゃんと全部把握するかJavaScriptをそのまま使う方がいい

249 名前:デフォルトの名無しさん mailto:sage [2016/03/04(金) 17:04:24.90 ID:JX9S2zww.net]
>>239
むしろ型を把握していない人ほどオススメなのでは。
Editorが教えてくれるようになるし
実行時にエラーになってデバッガでチェックというサイクルを何度も踏む手間が省ける。

250 名前:デフォルトの名無しさん mailto:sage [2016/03/04(金) 17:55:19.19 ID:5mk497Pl.net]
>>240
いやいや、例えばgetElementById()で返すのはHTMLElementだけど
これはlib.d.tsでextends HTMLElement検索すると分かるけど、全てのベースクラスだから
使う時は毎回適切にキャストする必要があって面倒臭い
で、間違うとコンパイルエラーとか実行時エラーになる

ちなみにjQueryとDOMでの話であって一般的には型があった方がいいのはその通り



251 名前:デフォルトの名無しさん mailto:sage [2016/03/04(金) 20:45:00.83 ID:JX9S2zww.net]
>>241
ちなみにHTMLElementの子クラスをキャスト候補として出す機能とかありますかね?
typeScriptというよりもVSCよりな質問かもしれませんけど。

252 名前:デフォルトの名無しさん mailto:sage [2016/03/04(金) 20:49:58.95 ID:JX9S2zww.net]
“error TS2304: Cannot find name” の対応ってどうされてますか?
例えばchrome Extension作りたくて chrome.d.tsを用意したんですが

RROR in …/typings/browser/ambient/chrome/chrome.d.ts
(5221,70): error TS2304: Cannot find name 'DirectoryEntry'.

ERROR in …/typings/browser/ambient/chrome/chrome.d.ts
(5807,22): error TS2304: Cannot find name 'MediaStreamConstraints'.

ERROR in …/typings/browser/ambient/chrome/chrome.d.ts
(5809,22): error TS2304: Cannot find name 'MediaStreamConstraints'.

ERROR in …/typings/browser/ambient/chrome/chrome.d.ts
(5819,73): error TS2304: Cannot find name 'MediaStream'.

以下の様なエラーメッセージが出ます。
それで依存している型定義ファイルを探して追加するとまたこのエラーメッセージが増えていくので
該当箇所をanyとかにしてごまかしているんですが、
本来の対応方針としてどうすればいいんでしょうか?

253 名前:デフォルトの名無しさん mailto:sage [2016/03/04(金) 23:31:41.69 ID:QtC/Wo3p.net]
>>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> それぞれを探してみては?

254 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 10:47:09.14 ID:E0f29hr+.net]
コード中でキャストしないようにと思うと
interface Document { getElementById(id: 'myElement'): HTMLAnchorElement; }
みたいな定義を読ませておくしかないよね

255 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 12:33:38.03 ID:jb1F0oyu.net]
>>244
typingsを使うときに勝手に再帰的に取りに行ってくれるオプションとか無いですかね。
今は諦めて、俺俺d.tsファイルに空のinterface作って対応してます。

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

257 名前:そう勝手にはいかないだろうけれど。

>>246
「コンパイルが通らなかったのでキャストを追加しました」
的な危うさを感じるな……まぁ好きにしなされ。
[]
[ここ壊れてます]

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

259 名前:デフォルトの名無しさん mailto:sage [2016/03/09(水) 02:26:14.01 ID:YWG9oDIr.net]
>>224
TypeScript 1.8はモジュール拡張のサポートを提供する
www.infoq.com/jp/news/2016/03/typescript1-8-released

260 名前:デフォルトの名無しさん [2016/03/09(水) 13:38:59.08 ID:YZujmLFz.net]
C,C++などの
#ifdef ABC

#endif
みたない構文はありますか?



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

262 名前:デフォルトの名無しさん mailto:sage [2016/03/09(水) 14:19:18.40 ID:YZujmLFz.net]
>>251
なるほど。
でも、さっそく
if(false){
...  // 不要なコード
}
としてみたら、
Unreachable code detected.
と出ました。
var use= false;
if (use == true) {
...  // 不要なコード
}
で行けました。こんなやり方おかしいですか?

Closure Compiler はビルド後に実行するコマンドでやるのでしょうか?

263 名前:デフォルトの名無しさん mailto:sage [2016/03/09(水) 15:24:10.02 ID:wC8YUP1c.net]
>>252
そんな感じでおk。var vs. const や == vs. === 等は
ポストプロセスとの相性があるだろうから試してくれ。
useの定義だけ単品のファイルにしてtsconfig.jsonで切り替えると良いかも。

もちろんtscの後に実行する。やり方はビルドツール次第。
デバッグ中はminifyされると面倒だから、リリース時だけ使うといい。

264 名前:デフォルトの名無しさん mailto:sage [2016/03/09(水) 20:12:15.23 ID:YZujmLFz.net]
>>253
サンキュウ。
君詳しいな。また教えてくれよ。

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

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

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

268 名前:デフォルトの名無しさん mailto:sage [2016/03/10(木) 10:54:45.09 ID:z40A+Y3k.net]
>>256>>257
うまくいったわ。ありがとう。

もう一つ教えて。Visual StudioでTypeScript勉強中なのだが、
function f(){
   ...
   return ;
   ...
}
とreturn入れると、
Unreachable code detected.
のエラーになってしまう。
JavaScriptなら警告だけなのに。
エラーになると実行出来ないのだが、対策ありますか?

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

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



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

272 名前:デフォルトの名無しさん mailto:sage [2016/03/14(月) 08:26:1 ]
[ここ壊れてます]

273 名前:9.76 ID:rt0F/u0o.net mailto: >>261
module/namespaceのexportしてないオブジェクトはローカル変数になるからできないね。
他のファイルから使いたいならexportするしかない。外部に公開されちゃうけど。

Partial Classについては、インスタンスなりprototypeなりに関数を代入すれば
似たようなことはできるけど、thisやsuperが扱えないかもしれないな。
インタフェースと declare var の組み合わせは代わりになるだろうか? lib.d.tsを参考に。
[]
[ここ壊れてます]

274 名前:デフォルトの名無しさん mailto:sage [2016/03/14(月) 10:05:23.83 ID:WJ0CXY/9.net]
JavaScriptの方で擬似的に名前空間化されていないものに
後からnamespaceで囲う必要はないと思う

partial classは実行時に実現できたとしてもclass内部の型定義が不完全になるでしょ
interfaceはいくつでも同名で定義できるので、全てpartialのようなもの

275 名前:デフォルトの名無しさん mailto:sage [2016/03/14(月) 14:40:23.18 ID:CkOIJo3B.net]
>>262 >>263
詳しい説明ありがとうございました。

>JavaScriptの方で擬似的に名前空間化されていないものに
>後からnamespaceで囲う必要はないと思う

JSのファイルは全部で50個くらいあり、
全部をTS化したいのです。
それで、取りあえず、ある特定の機能に関連している10ファイルを一つにしたくて、
同じmodule名で囲ってみました。

結局、その10ファイルの中でも互いに利用する関数はそれぞれexportして互いに利用し、
一方グローバル変数は一つのTSファイルに集めてそれらを全部exportして10個のTSや、他のJSファイルの中で利用しました。
こういう方針でやるのは、正統的ではないですか?
正しい手法があれば教えて下さい。

276 名前:デフォルトの名無しさん mailto:sage [2016/03/14(月) 15:30:12.67 ID:rt0F/u0o.net]
たまたま見つけてタイムリーだったので張っておく。現実装に依存しすぎだとは思うが。
> TypeScriptのクラスをnamespaceで拡張する
ttp://qiita.com/ConquestArrow/items/5d885128f896844698dd

複数ファイルから成る出力全体をモジュールで包む機能って無いんだっけ?
単に function() { ... } で囲んでくれるだけで良いんだけれど。
モジュール内部の各所では使うものの、外部からアクセスする必要のないものはローカル化したい。

277 名前:デフォルトの名無しさん mailto:sage [2016/03/14(月) 15:55:47.88 ID:sQIOa7FM.net]
最近はもうnamespaceを使うのはお勧め出来ないな。ES6の機能にないし
https://blogs.msdn.microsoft.com/typescript/2016/02/22/announcing-typescript-1-8-2/
この最初に書いてある方法がclassを拡張するには今時の方法なんじゃないかな?

ES6のmoduleは1ファイル1モジュールな感じだから全部のファイルを特定のモジュール名で括るという
考えは捨てるべきだと思われる
メインのファイルがそのほかを全部importして必要なものをexportするべきだろうね

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

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

280 名前:デフォルトの名無しさん mailto:sage [2016/03/15(火) 20:09:42.73 ID:9cVBtkdm.net]
どうでもいい



281 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 00:53:23.89 ID:dOYh+a0T.net]
どうでも良くない

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

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

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

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

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

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

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

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

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



291 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 19:50:11.64 ID:ybZd+XDK.net]
stackoverflow.com/questions/12802383/extending-array-in-typescript
にある例
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 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 21:18:45.36 ID:FCgg2gkL.net]
>>279
呼び出してるとこも書かないとそれだけじゃ分からん

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

294 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 23:19:57.85 ID:2Htg2ogu.net]
>>281
Playgroundなら動くように見えるが、これでいいのか?
tiny.cc/1fw49x

tscのバージョンとかビルドオプションにも関係するかもしれない。
型チェックを厳しくすると文句を言われる気がする。
その場合は any にキャストして黙らせるんだろうけど。

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

296 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 08:30:08.17 ID:lH6dzSdk.net]
>>283
君は基本的な姿勢が身についていない
・質問をする場合は、再現可能なコード片を添付せよ
・エラーを特定し、メッセージを加工せずに報告せよ

>>279 だけ見ると、使用時にエラーがあるように読めるが
>>281 では、実装時にエラーがあるように読める(エラー内容は不明)
こんなことでは他人の手を煩わせるだけだ

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

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

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

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



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

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

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

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

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

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

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

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

function func(hoge?: number)

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

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

310 名前:デフォルトの名無しさん mailto:sage [2016/03/22(火) 21:53:50.90 ID:uAieVvDE.net]
>>295
ありがとうございますちなみにそのフロー解析はドコまでやってくれるんでしょうか?
例えばtypeScript上で書いたFuncAがあって

let a= FuncA()
use(a)

みたいにFuncAの中で返却値がnullチェックされていれば
上記のようにnullチェック無しで使えるんでしょうか?



311 名前:デフォルトの名無しさん mailto:sage [2016/03/22(火) 22:18:13.97 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/03/22(火) 22:43:28.85 ID:BfQhAJB6.net]
皆さんどういう環境でtypescriptやっているのですか?
winのvisual studioは少数派かな?

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

314 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 13:40:01.83 ID:s9X+rvra.net]
>>301
だからNon-nullableがデフォだからって絶対nullが出てこないわけじゃないでしょ
DOMだのWebAPIは普通にnullを返すし自前の関数だってnullとかundefinedを返したいことは普通にある

それと引き数の省略には func(hoge = -1) とかにすればいいんだよ

315 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 14:26:23.62 ID:2mxU+x1U.net]
qiita.com/mizchi/items/95ee0101ac22e4b7b662
上記記事でtypeScriptディスられているんですが、

> 最近のTypeScript は動作環境のロックインが多くなりつつあり、またコンパイル後のJSはedgeで動くからこれでいいんだ、というMSの姿勢が若干透けて見えて、ちょっと距離を置きたい気分です。
というのは本当なんでしょうか?
具体的にどういうものがあるのか知りたいです。

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

317 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 16:16:09.46 ID:+D1Yzwu/.net]
>>303
っ「要出典」
es5モードならほとんどのブラウザで動くし、es6だとEdgeでさえ動かない。node用。

一時期 async/await を強く推していて、.NET系言語、ES、Python にまで採用させた
(良く言えば、開発に協力した)のは、煙たがられていた印象はある。

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

319 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 16:42:09.62 ID:+D1Yzwu/.net]
>>304
JSだとさらに「undefinedを保持」と「未定義」の区別がある場合も。
「不在」と「不明」は別という考え方もあったが、結局、一般人には使いこなせなかったんだろう。

ちなみにLuaはnilしかなく、nilを代入するとJSのdelete演算子になるんだが、
「保持できるnil」(キーとしては残る)のためにnullが欲しいという話もたまに出る。
何が最良かは難しいところだな。

320 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 16:55:04.92 ID:4qmKzsXk.net]
return 'undefined';



321 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 17:35:37.11 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 23:04:51.01 ID:+D1Yzwu/.net]
>>309
無理でしょう。TypeScriptのinterfaceはコンパイル後には何の痕跡も残らない。
実行時にはinterface由来の型情報は使えない。

324 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 14:14:40.73 ID:v9bzQn8L.net]
TypeScriptはコンパイル時にはinterfaceを認識してるはずだが
コードでそれをチェックする術がないな (今後も追加される事は絶対ないだろうが)

しかしinterfaceのどれかに合致するかっていう考え方ちょっと違うな
例えば
interface A {
 a:number
}
interface B {
 b:string
}
があれば
{
 a:1,
 b:

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

326 名前:デフォルトの名無しさん [2016/03/24(木) 17:51:19.94 ID:QUxdzUzn.net]
chromeでデバッグできますか?

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

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

329 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 02:00:53.64 ID:G+z1ebGz.net]
>>314
webpackです。typo

330 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 12:36:24.15 ID:Ib2txsDS.net]
>>314
iisサーバーは?



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

332 名前:デフォルトの名無しさん mailto:sage [2016/03/28(月) 14:50:43.22 ID:6ufq8Y0K.net]
--target ES6にすれば使えるっていうかそれぐらい察しろ

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

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

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

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

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

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

339 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 23:59:54.54 ID:/4tKcoWK.net]
typescript初心者です。
Visual Studioで、
module mod {
function func() {
alert('func');
}
}
が、
var mod;
(function (mod) {
function func() {
alert('func');
}
})(mod || (mod = {}));

になるのですが、分からないのは、
(mod || (mod = {}));
の部分です。
これは何でしょうか?
どなたか解説お願いいたします。あるいはヒントなどお教えください。

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



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


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

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

344 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 00:48:40.40 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 10:30:36.29 ID:ep3rTpAI.net]
>>329
連結する順番でエラーになることはある。
特にグローバルスコープ(関数の外)で処理が走る場合かな?

tslint を入れて no-use-before-declare (宣言前に使うと警告) で
チェックする手はあるかもしれない。

346 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 12:30:46.37 ID:MBVppC7j.net]
>>330
情報ありがとうございました。
調べてみます。

347 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 21:56:30.51 ID:aXmXxCLh.net]
TypeScript 2.0プレビュー
www.infoq.com/jp/news/2016/04/typescript-2-preview

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

349 名前:デフォルトの名無しさん mailto:sage [2016/04/13(水) 16:56:49.53 ID:xgAfpouO.net]
面白いねTypeScript2.0

undefinedとnullはそれぞれ独立した型になって
let a: number|null|undefined
みたいに宣言するようになるのか

350 名前:デフォルトの名無しさん mailto:sage [2016/04/13(水) 22:27:08.77 ID:JKiuLOht.net]
voidでよくね



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

352 名前:デフォルトの名無しさん [2016/05/01(日) 13:04:39.03 ID:tKi6j9CT.net]
匿名通信(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でも利用可能です(接続数は

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

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

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

356 名前:デフォルトの名無しさん [2016/05/02(月) 10:47:24.02 ID:H1b5QbBD.net]
レスありがとうございます。こんなに早く反応があるとは思いませんでした。見逃してしまって申し訳ないです。

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

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

それにしても間違ったコードを書いてもビルドエラーにはならないんですね……。
これではどこでミスったかチェックしにくい。

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

358 名前:デフォルトの名無しさん mailto:sage [2016/05/03(火) 07:37:48.31 ID:llYnk/DC.net]
「新しいプロジェクトを作ってソースを移動させたらうまくいく」ケースは俺も何度か経験したことがあるなぁ
しかも>>338と違ってコンパイルエラーは発生していない

ビルドして実行してもjsが前回のビルドのままってところまでは一致してるんだよな
(そもそもビルドできないのだが)

359 名前:デフォルトの名無しさん mailto:sage [2016/05/09(月) 17:02:14.42 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/05/09(月) 17:17:18.07 ID:8SRbjrMh.net]
既存のファイルを追加すれば参照してくれるでしょ
プロジェクト以下に収めなきゃいけない理由がないなら
common, proj1, proj2と横並びにすればいい



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

362 名前:デフォルトの名無しさん mailto:sage [2016/05/10(火) 15:04:25.21 ID:/c+E/E1d.net]
だれも分からないの?

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

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

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

366 名前:デフォルトの名無しさん mailto:sage [2016/05/10(火) 22:23:56.70 ID:/c+E/E1d.net]
>>349
windowsでスタテクリンク出来る?

367 名前:デフォルトの名無しさん mailto:sage [2016/05/10(火) 22:31:47.62 ID:ygHcjv1V.net]
ジャンクションでググて

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

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

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



371 名前:デフォルトの名無しさん mailto:sage [2016/05/11(水) 22:31:42.85 ID:3ijDNnlQ.net]
ジャンクションでも似たような問題あるのか、、
d.hatena.ne.jp/foldrr/touch/20091120/p1
いまはどうなんだろう

372 名前:デフォルトの名無しさん mailto:sage [2016/05/12(木) 18:40:46.37 ID:jzt1qSkA.net]
>>353
Windowsってフォルダのハードリンク作れたっけ?

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

374 名前:デフォルトの名無しさん mailto:sage [2016/05/14(土) 11:46:02.57 ID:fLeelvLJ.net]
XPでもジャンクション使えたけど
MSの態度が曖昧でどうしたいのかわからなかった

Vista でこの辺のファイルリンクとか代替ストリームとか正式サポートされた

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

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

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

378 名前:デフォルトの名無しさん mailto:sage [2016/05/17(火) 11:19:25.01 ID:NWTAtPGB.net]
リンクっつーよりマウントだな

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

380 名前:デフォルトの名無しさん mailto:sage [2016/05/17(火) 13:54:39.38 ID:awF8sDTJ.net]
Linuxでもディレクトリのハードリンクはできなかったはず。
unix.stackexchange.com/questions/22394/why-are-hard-links-to-directories-not-allowed-in-unix-linux
>>358 のroot権限うんぬんは、Solaris限定かもしれない。

Windowsでも記事がある。今ならmklinkだけでいい。昔はfsutilなりlinkdなりもあった。
www.atmarkit.co.jp/ait/articles/1306/07/news111.html
フォルダのハードリンクはできないから >>353 も用語違い。
まぁ、ジャンクション+ごみ箱が多くの不幸な事故を生み出したのはその通りだが。



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

382 名前:デフォルトの名無しさん mailto:sage [2016/05/17(火) 15:17:02.05 ID:awF8sDTJ.net]
そんな事より元々の質問をVisual Studio 2015のスレで聞け。
簡単な回答は >>344 >>352 で既出。

VS2015のUIだとファイルのコピーが作られるのが問題なのだろうが
*.csproj を直接テキスト編集すれば上位フォルダのパスも扱えるようには見える。
Include="..\xxx"

383 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 14:0 ]
[ここ壊れてます]

384 名前:0:10.58 ID:DKR1hPoU.net mailto: windows10でtypescriptやるには何をインストールすればいいのさ? []
[ここ壊れてます]

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

386 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 22:34:33.37 ID:tjGnKxey.net]
ms謹製なので、msのツールが使えそう

387 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 18:08:24.21 ID:3F7VjM1T.net]
VSで作っているけど
#region
#endregion
的な物ない?

388 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 19:51:23.66 ID:BRPGaK18.net]
>>369
無い

389 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 21:45:06.08 ID:dGWHMJs+.net]
>>370
ありがとうございます!

390 名前:369 mailto:sage [2016/06/04(土) 22:49:04.19 ID:3F7VjM1T.net]
>>371
お前誰?



391 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 22:49:50.74 ID:3F7VjM1T.net]
>>370
ないんですね
ありがとうございます

392 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 23:36:31.88 ID:o/6G/bzU.net]
>>369
Proposal: Preprocessor Directives
https://github.com/Microsoft/TypeScript/issues/4691

プリプロセスの提案はあるよ
でもこれに限らず、C#にある仕様だからといって優先的に取り組む感じはしないかな
節度を持ってJS文化に適合させていきたいのかもね

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

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

395 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 22:29:38.27 ID:L2JcFKfv.net]
>>375
overrideは入りうるよ
一度は断ったけど、最近になって再検討して受け入れることにしたようだ

Support override keyword on class methods
https://github.com/Microsoft/TypeScript/issues/2000

396 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 22:52:16.31 ID:E+nifBZa.net]
>>377
お、375じゃないけど超うれしい

397 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 19:04:16.91 ID:PJUBR4L+.net]
The Future of Declaration Files
https://blogs.msdn.microsoft.com/typescript/2016/06/15/the-future-of-declaration-files/

関連
npmでTypeScriptの型定義を管理できるtypesパッケージについて
qiita.com/laco0416/items/ed1aadf335f12cd3618d

398 名前:デフォルトの名無しさん [2016/07/15(金) 00:06:52.35 ID:3lt2T5b1.net]
Announcing TypeScript 2.0 Beta
https://blogs.msdn.microsoft.com/typescript/2016/07/11/announcing-typescript-2-0-beta/

TypeScript 2.0 Beta 変更点
qiita.com/vvakame/items/ae239f3d6f6f08f7c719

399 名前:デフォルトの名無しさん mailto:sage [2016/07/15(金) 00:10:10.35 ID:3lt2T5b1.net]
15K行のアプリをTypeScript1.8から2.0に移行してみた
rhysd.hatenablog.com/entry/2016/07/15/090000

400 名前:デフォルトの名無しさん mailto:sage [2016/07/17(日) 11:23:12.55 ID:cN3YyD0v.net]
ES3対応ってまだいるの?



401 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 16:13:28.10 ID:jfk77b+M.net]
https://github.com/showcases/programming-languages

TypeScript  ★13,201
CoffeeScript ★13,152

遂にGithubスター数がCoffeeScriptを超えた

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

403 名前:デフォルトの名無しさん mailto:sage [2016/07/24(日) 15:50:35.09 ID:5+wwO3kQ.net]
Intellij IDEAでTS開発捗りすぎワロリンヌ

404 名前:デフォルトの名無しさん mailto:sage [2016/07/26(火) 06:50:53.34 ID:HN1KCMsQ.net]
JavaScriptとTypeScriptの関係は
C言語とJavaの関係に似

405 名前:ている様な気がする []
[ここ壊れてます]

406 名前:デフォルトの名無しさん mailto:sage [2016/07/26(火) 07:58:39.74 ID:l+RwS+H8.net]
>>386
だから何よ?

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

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

409 名前:デフォルトの名無しさん mailto:sage [2016/07/27(水) 06:57:54.53 ID:Pn9H7j+u.net]
>>387
歴史は繰り返す

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



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

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

413 名前:デフォルトの名無しさん mailto:sage [2016/07/28(木) 06:25:04.12 ID:jPXeBRxR.net]
FunScriptでもやるか

414 名前:デフォルトの名無しさん mailto:sage [2016/07/28(木) 19:15:17.96 ID:O8Vfrh0P.net]
>>393
LLVMじゃね

415 名前:デフォルトの名無しさん mailto:sage [2016/07/29(金) 10:57:47.10 ID:eqy9GKk1.net]
2.0のstrictNullChecksへの対応は結構キツイなぁ
「フィールドAがあれば、フィールドBも必ずある」ような暗黙ルールを咎められる

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

構文としては、返値、ローカル変数、末尾以外の引数にundefinedを許したい場合
いちいち「| undefined」が必要になる。Swiftのように ? は型の側が良い気がするんだが

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

417 名前:デフォルトの名無しさん mailto:sage [2016/07/29(金) 16:06:58.19 ID:eqy9GKk1.net]
「存在しない」と「undefinedを保持している」の2つの意味があるからなぁ
前者ならプロパティの属性、後者なら型の属性に解釈できるように感じる

strictNullChecksは簡単には対応できなかったが
noImplicitThis, noUnusedLocals, noUnusedParameters は
影響が少ないわりにバグを拾ってくれてありがたかった

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

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

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



421 名前:デフォルトの名無しさん [2016/07/30(土) 13:20:14.13 ID:NnN7Vre0.net]
===を使えば全部解決

422 名前:デフォルトの名無しさん mailto:sage [2016/07/30(土) 23:28:44.49 ID:r21OKS05.net]
"型?" については "| null"、"| undefined"、その両

423 名前:
どれにすべきかで議論がまとまらなかったみたいだ
しばらくは採用されないだろう

https://github.com/Microsoft/TypeScript/issues/7426
https://github.com/Microsoft/TypeScript/issues/7488
[]
[ここ壊れてます]

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

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

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

427 名前:デフォルトの名無しさん mailto:sage [2016/08/01(月) 22:13:22.57 ID:cFMFBdlm.net]
Suggestion: Extension methods
https://github.com/Microsoft/TypeScript/issues/9

初期から提案のあった拡張メソッドだが、不採用が決まった

428 名前:デフォルトの名無しさん mailto:sage [2016/08/02(火) 00:27:46.69 ID:EfYzXtbg.net]
型の有無で動作が変わるのはTypeScriptの設計思想からして不適切

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

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



431 名前:デフォルトの名無しさん mailto:sage [2016/08/02(火) 18:37:46.13 ID:+e4iDA+F.net]
>>410
アルゴリズムの本じゃね?

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

433 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 01:16:56.62 ID:Ot1v5VqO.net]
これはひどい釣り

434 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 08:01:27.31 ID:8fjgpLNn.net]
数値と文字が渡されないケースなら ! でも良い
渡されるなら == null (2個) を使う

TSLintの設定で、比較で null を使うのは許して、値としては許さないのが欲しいな

435 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 12:08:49.21 ID:mbys/AN5.net]
null汚染

436 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 14:40:42.74 ID:3251V7HB.net]
>>413
お前がど素人なのはわかったよw

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

438 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 21:04:30.24 ID:Ot1v5VqO.net]
入れるわけねーだろバカ

439 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 22:55:31.78 ID:Ve2x0gaK.net]
皆さん結局nullとundefinedを区別しているの?どんなコードを書いているの?

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



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

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

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

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

445 名前:デフォルトの名無しさん mailto:sage [2016/08/26(金) 07:44:50.99 ID:LCNVy+4G.net]
>>424
enum同士の除算結果の型はnumberだから、コンパイラの解釈は妥当だぞ

「単位付き数値」があればエラーにできるケースもあるかもしれない
Nominal typesの一環で良い感じの機能が入らないものか

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

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

448 名前:デフォルトの名無しさん mailto:sage [2016/08/26(金) 16:16:08.43 ID:LCNVy+4G.net]
他言語と比べると確かにチェックがガバガバだが
interfaceを明示的にimplementsしなくてもシグニチャだけを見ることと比べると
一貫性はあるとは思う。型システムがStructuralなことの弊害だろう

数値でなくても良いなら enum より String Literal Types を使うべきなんだろうな

449 名前:デフォルトの名無しさん mailto:sage [2016/08/26(金) 16:48:05.33 ID:mbeLOtT9.net]
型システム自体はJavaScript側にあるんだ
TypeScriptがやってる事はJavaScriptのソースに書かれてる型を見えるようにしてるだけとも言える

そもそもJavaScriptが動的型なんだから無理やり静的型にしようとしても微妙なところは出てくるだろうな

450 名前:デフォルトの名無しさん mailto:sage [2016/09/01(木) 04:24:05.73 ID:oFB7MvRf.net]
Announcing TypeScript 2.0 RC
https://blogs.msdn.microsoft.com/typescript/2016/08/30/announcing-typescript-2-0-rc/

>>380に追加
Number, enum, and boolean literal types
https://github.com/Microsoft/TypeScript/pull/9407



451 名前:デフォルトの名無しさん mailto:sage [2016/09/02(金) 02:34:58.82 ID:D4RF+Hn1.net]
switch使うとダサくなるな
match withにして欲しい

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

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

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

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

456 名前:デフォルトの名無しさん mailto:。sage [2016/09/09(金) 21:36:47.25 ID:oMlYA35z.net]
letは再入不可にして欲しいなあ

457 名前:デフォルトの名無しさん mailto:sage [2016/09/09(金) 21:41:01.71 ID:0o6Zl0oX.net]
constじゃあかんの?

458 名前:デフォルトの名無しさん mailto:。sage [2016/09/10(土) 07:30:02.50 ID:XD8JXdoT.net]
なんか名前が先祖帰りっぽくてなあ

459 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 01:15:44.93 ID:PWIs+lC0.net]
>>436は「再入」不可と言ってんだが…

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



461 名前:デフォルトの名無しさん mailto:sage [2016/09/11(日) 08:21:20.09 ID:o8qO+nVm.net]
「リエントラントな変数」はナンセンス

462 名前:セから、ま、多少はね? []
[ここ壊れてます]

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

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

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

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

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

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

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

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



471 名前:デフォルトの名無しさん mailto:sage [2016/09/21(水) 09:53:22.62 ID:ye3OhaXn.net]
netbeansでtsファイルをコンパイルできますか?

472 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 07:28:38.08 ID:wUPl9fHa.net]
TypeScript 2.0 正式リリース
https://blogs.msdn.microsoft.com/typescript/2016/09/22/announcing-typescript-2-0/

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

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

475 名前:デフォルトの名無しさん mailto:sage [2016/09/26(月) 03:17:54.07 ID:Pt8k1v+W.net]
>>451
Revised 型の国のTypeScript
typescript.ninja/typescript-in-definitelyland/

>>430
TypeScript 2.0.3 変更点
qiita.com/vvakame/items/826bf193dd301862014f

476 名前:デフォルトの名無しさん mailto:sage [2016/09/26(月) 12:48:28.20 ID:KtFZyGzz.net]
型の国新人研修マニュアルみたいで微妙だった

477 名前:デフォルトの名無しさん mailto:sage [2016/09/26(月) 14:39:12.43 ID:ymOrEJcI.net]
一瞬変な絵が出てブラクラかと思った
techbooster.github.io/c90/#typescript

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

479 名前:追加する事になるのかな []
[ここ壊れてます]

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



481 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 00:21:02.93 ID:DHOAQjGg.net]
変なのが来た

482 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 13:49:47.90 ID:cO8I5ivP.net]
Delphiか、、Prismはお試しで終わったっけな

483 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 16:37:55.22 ID:LSfhFpLX.net]
espower-typescriptのtypescript2対応版ってないですか?

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

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

486 名前:デフォルトの名無しさん mailto:sage [2016/09/30(金) 12:56:49.51 ID:Y6l190wq.net]
typescriptでは、
こういう書き方をするようですが、

$(document).ready(() => { ... });

普通の書き方

$(document).ready(function () { ... });

だとダメなのでしょうか?

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

488 名前:デフォルトの名無しさん mailto:sage [2016/09/30(金) 17:16:18.31 ID:ff48EwFg.net]
>>464
typeScriptというよりes2015ですね。

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

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



491 名前:デフォルトの名無しさん mailto:sage [2016/10/06(木) 15:59:28.90 ID:xaiWfMZS.net]
() => {}.bind(this)

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

493 名前:デフォルトの名無しさん mailto:sage [2016/10/07(金) 14:51:03.71 ID:CXORFQa6.net]
null合体演算子はありますか?

494 名前:デフォルトの名無しさん mailto:sage [2016/10/08(土) 21:45:49.55 ID:2uwi8nYQ.net]
>>471
|| のことかな? falseだとダメだけど

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

496 名前:デフォルトの名無しさん mailto:sage [2016/10/21(金) 09:58:59.53 ID:xTFSBjWO.net]
>>473
qiita.com/m0a/items/710b8f2b8327868cf049

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

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

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

500 名前:デフォルトの名無しさん mailto:sage [2016/10/25(火) 00:14:10.49 ID:jY50IjHL.net]
その手の質問はQ&Aサービス使え



501 名前:デフォルトの名無しさん mailto:sage [2016/10/25(火) 09:54:10.21 ID:wi8xj/Ad.net]
>>477
--typeRoots

次からhttps://github.com/Microsoft/TypeScript/wikiを必

502 名前:ヌとしてテンプレに入れようぜ []
[ここ壊れてます]

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

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

505 名前:デフォルトの名無しさん mailto:sage [2016/10/25(火) 18:39:55.45 ID:UTXk7OSn.net]
たしかに .Net Framework使えたら便利だな

現状ではNode.jsから外部コマンドを叩いて
C#やPowerShellを経由すればできるんじゃね

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

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

508 名前:デフォルトの名無しさん mailto:sage [2016/10/26(水) 02:40:39.39 ID:m/Az1cPZ.net]
>>483
>TypeScript使いの人はMicrosoftマンセーの人が多いの?
特定の企業が好きというよりかは
デファクトスタンダードに乗りたいだけ

WinとMacならWinが(価格性能比的に)使いやすいし
AndroidとiPhoneならAndroidが使いやすいから
(規制が少ないのでとくに開発側としては)

509 名前:デフォルトの名無しさん mailto:sage [2016/10/26(水) 03:51:14.56 ID:CrOhdQQd.net]
typescript使うよりc#で書くほうが楽だよね

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



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

512 名前:デフォルトの名無しさん mailto:sage [2016/10/26(水) 14:57:17.75 ID:L9VZpe/b.net]
tsc.js
https://github.com/Microsoft/TypeScript/blob/master/lib/tsc.js

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

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

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

516 名前:デフォルトの名無しさん mailto:sage [2016/10/31(月) 11:16:34.62 ID:zObjWshz.net]
データと操作を分離する運用

https://goo.gl/L2gey4

上記スタックオーバーフローを見てたんですが
データ構造を扱うときにclassを使わずにすべてjsonにしてしまうって運用は結構を有る話でしょうか?
個人的にはElixirも触っていてデータ構造と処理関数を分けると言うのはアリだとは思うんですが
手元のコードはclass使いまくりでシリアライズが必要になったタイミングで軽く後悔しているところです(^ρ^)

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

518 名前:デフォルトの名無しさん mailto:sage [2016/10/31(月) 12:58:02.65 ID:zObjWshz.net]
>>494
それでデシリアライズしたものをシリアライズした時

519 名前:にどうやってPenDataだと特定するの? []
[ここ壊れてます]

520 名前:デフォルトの名無しさん mailto:sage [2016/10/31(月) 13:30:00.95 ID:lUtaNTCT.net]
>>495
シリアライズした構造が固定なら、ルートから順に再構築するのでは?
自分で全てのコンストラクタなりdeserializeメソッドを実装することになる

汎用デシリアライズ関数1個で全てを賄うつもりなら、JSON内にクラス名を保持して
クラス名とJSONからオブジェクトを構築するファクトリを用意するのかな

TypeScriptは実行時型情報が無いから、意外と素直で原始的な方式になると思う



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

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

523 名前:デフォルトの名無しさん mailto:sage [2016/10/31(月) 20:32:53.85 ID:963XFQ2I.net]
ここまでなんのためにシリアライズするか確認するやつなし

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

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

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

527 名前:デフォルトの名無しさん mailto:sage [2016/11/01(火) 03:17:05.88 ID:ZbjdSYd3.net]
>>501
普通にobjectを渡せるんじゃないか?

528 名前:デフォルトの名無しさん mailto:sage [2016/11/09(水) 22:55:56.80 ID:w82iFkDp.net]
React Componentを相対パスでimportするのはもう嫌なので、絶対パスでimportしてやる
qiita.com/endam/items/49696abedb68878d8b01
コレいいなって思ったんですがTypeScriptで絶対パス指定する方法って標準であったりしないですかね?

529 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 00:57:52.66 ID:+mabk82N.net]
TypeScript 2.1 RC: Better Inference, Async Functions, and More
https://blogs.msdn.microsoft.com/typescript/2016/11/08/typescript-2-1-rc-better-inference-async-functions-and-more/

530 名前:デフォルトの名無しさん mailto:sage [2016/11/10(木) 03:11:40.39 ID:XJYCbDSV.net]
モジュール周りはここに書いてあるようだ。
https://www.typescriptlang.org/docs/handbook/module-resolution.html



531 名前:デフォルトの名無しさん [2016/11/12(土) 00:03:42.69 ID:0EI9e+TE.net]
>>505
TypeScript 2.1.1 変更点
qiita.com/vvakame/items/305749d3d6dc6bf877c6

532 名前:デフォルトの名無しさん [2016/11/16(水) 13:26:15.81 ID:VglaLP8t.net]
bucklescript ω

533 名前:デフォルトの名無しさん mailto:sage [2016/11/20(日) 01:23:41.33 ID:PZEuAd0p.net]
みんなエディタは何使ってるの? VisualStudio以外にいいエディタある?

534 名前:デフォルトの名無しさん mailto:sage [2016/11/20(日) 08:29:21.81 ID:p95gh/Vn.net]
vscode

535 名前:デフォルトの名無しさん mailto:sage [2016/11/20(日) 09:20:47.29 ID:mNZMIvsS.net]
vim

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

537 名前:がある。メソッド補完とかリファクタリングとか全部出来る []
[ここ壊れてます]

538 名前:デフォルトの名無しさん mailto:sage [2016/11/20(日) 16:06:26.39 ID:rN9nZaoB.net]
>>509
ALM
alm.tools/

好きが高じてエディタまで作ってしまった例

539 名前:デフォルトの名無しさん mailto:sage [2016/11/20(日) 17:44:23.07 ID:Y8tBh63Q.net]
>>513
+1

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



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

542 名前:デフォルトの名無しさん mailto:sage [2016/12/01(木) 23:31:35.77 ID:V3pVktwk.net]
TypeScript Advent Calendar 2016
qiita.com/advent-calendar/2016/typescript

(今年も)やっちまった感

543 名前:デフォルトの名無しさん mailto:sage [2016/12/02(金) 15:42:21.41 ID:ocojT6FV.net]
需要なしか

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

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

546 名前:デフォルトの名無しさん mailto:sage [2016/12/03(土) 22:27:39.83 ID:W5YxFMDl.net]
TypeScript 2.1のkeyofとかMapped typesがアツい
qiita.com/Quramy/items/e27a7756170d06bef22a

そろそろ2.1正式版来る気配

547 名前:デフォルトの名無しさん mailto:sage [2016/12/05(月) 08:39:36.02 ID:vZnFdVec.net]
人気ないでしょ。

548 名前:デフォルトの名無しさん mailto:sage [2016/12/05(月) 09:21:11.08 ID:nuFcVUYF.net]
英語圏はどうなのよ

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

550 名前:デフォルトの名無しさん mailto:sage [2016/12/05(月) 17:57:33.20 ID:dF177W8B.net]
>>519
Tcl/Tkの誰か立ててよ



551 名前:デフォルトの名無しさん mailto:sage [2016/12/08(木) 07:43:57.58 ID:sRPpwh3/.net]
https://blogs.msdn.microsoft.com/typescript/2016/12/07/announcing-typescript-2-1/
「...」系の構文が増えるといいなぁ
最近のC++に追加された構文が便利だから

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

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

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

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

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

557 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 10:13:56.45 ID:yQhPHczS.net]
constructor(public parm1, private parm2) {

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

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

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



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

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

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

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

565 名前:デフォルトの名無しさん mailto:sage [2016/12/16(金) 23:29:20.71 ID:lf6NCS1E.net]
ゲーデル「そこはゲーデル数で…」

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

567 名前:デフォルトの名無しさん mailto:sage [2016/12/17(土) 17:02:33.38 ID:a9hyyPvt.net]
むしろその世代だったからよかったのかも

568 名前:デフォルトの名無しさん [2016/12/18(日) 15:38:22.61 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/12/18(日) 15:52:58.94 ID:gkl2dVgP.net]
内部モジュール形式と外部があって内部だとネームスペースはすべて同じものとしてマージされるから参照できる
内部ゴミだから外部覚えろ

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



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

572 名前:デフォルトの名無しさん mailto:sage [2017/01/19(木) 09:39:46.00 ID:uhfgjGGl.net]
https://chrome.google.com/webstore/detail/%E3%81%AF%E3%81%A6%E3%81%AAng/mbgdnfmdelffjdhkdggilmphfdihnmcj?hl=ja

573 名前:デフォルトの名無しさん mailto:sage [2017/02/03(金) 10:13:11.49 ID:ppyFFvug.net]
TypeScript 2.2
https://blogs.msdn.microsoft.com/typescript/2017/02/02/announcing-typescript-2-2-rc/
・object type - "non-primitive"を表す型
・mixins and composable classes - 無名クラスを返す関数のサポート

574 名前:デフォルトの名無しさん mailto:sage [2017/02/03(金) 11:53:48.71 ID:OZdxyk8U.net]
>>548
rcかあ
入れるのはやめとくわ

575 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 21:38:00.71 ID:g48+zfGw.net]
typescript版のjsFiddleみたいなのないですかね?

576 名前:デフォルトの名無しさん [2017/02/13(月) 21:52:46.81 ID:XAOuYKtl.net]
>>550
https://jsfiddle.net
typescript選べるんだけど、何がお望み?

577 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 08:03:16.30 ID:06xiI2rQ.net]
>>551
補完が効かないとtypescriptの意味ないよね。

578 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 22:01:13.41 ID:PJNUS5QV.net]
なぜ TypeScript の型システムが健全性を諦めているか
qiita.com/na-o-ys/items/aa56d678cdf0de2bdd79

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

580 名前:デフォルトの名無しさん mailto:sage [2017/02/15(水) 13:37:43.12 ID:0zPxl8zN.net]
いいよ
あるよ



581 名前:デフォルトの名無しさん mailto:sage [2017/02/16(木) 14:34:53.75 ID:I/Biy33K.net]
typescript ってclassの中でclassは定義できないの?

582 名前:デフォルトの名無しさん mailto:sage [2017/02/16(木) 16:54:40.22 ID:H/kSQGez.net]
>>556
innerClass = class { ... } の構文を使ってみては?

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

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

585 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 21:12:34.52 ID:sjM/LKuB.net]
Announcing TypeScript 2.2
https://blogs.msdn.microsoft.com/typescript/2017/02/22/announcing-typescript-2-2/
TypeScript 2.2.1 変更点
qiita.com/vvakame/items/eb6c054360868b88f9b1

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

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

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

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

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

587 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 00:28:00.75 ID: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 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 02:18:51.51 ID:9qStAS/N.net]
>>562
そもそも今は/// <reference path=みたいな書き方はしない。
@types/XX npm install すれば使えるはず。

589 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 02:40:46.59 ID:/2pY/ZTT.net]
インストしても明示的なインポートなしには使えんよ

590 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 03:16:06.29 ID:TMN19OY5.net]
>>562
エラーしてる部分のソース貼るといいよ



591 名前:561 mailto:sage [2017/03/19(日) 11:24:02.73 ID: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 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 13:25:11.81 ID:9qStAS/N.net]
>>566
エディター何使ってんの?
typescriptなら書いてるそばから検出できるエラーじゃないのか?

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

594 名前:デフォルトの名無しさん mailto:sage [2017/03/28(火) 14:44:15.57 ID:3EkUFmFA.net]
interfaceの定義でArrayの要素が2つしかない場合の定義の仕方ってあるかな

interface Pair {
number[2]
}

interface Data {
pairs :Pair[]
}

みたいな感じで定義できないもんか。
諦めてnumber[]にするしかない?

595 名前:デフォルトの名無しさん mailto:sage [2017/03/28(火) 14:54:23.37 ID:OG3qmdJs.net]
タプル使え

596 名前:デフォルトの名無しさん mailto:sage [2017/03/28(火) 17:30:18.19 ID:3EkUFmFA.net]
>>570
thanks

type Pair = [number,number]
interface Data {
pairs :Pair[]
}

597 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 23:49:26.09 ID: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 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 01:47:51.53 ID:y+1gOmlP.net]
そのモジュールのグローバル変数化宣言
公式wiki嫁

599 名前:デフォルトの名無しさん mailto:sage [2017/04/01(土) 20:31:37.83 ID:es45r1Ne.net]
型定義ファイルの書き方がよくわからなくてつんでいます

node-transmission
https://github.com/FLYBYME/node-transmission
の型定義ファイルが見当たらないので作っているんですが

もとの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 名前:デフォルトの名無しさん mailto:sage [2017/04/01(土) 22:04:14.42 ID:es45r1Ne.net]
>>574
すいません。自己解決しました。
JSのモジュールまじしんどい



601 名前:デフォルトの名無しさん mailto:sage [2017/04/09(日) 14:34:29.06 ID:ZBMiMXkM.net]
>>41
partial classは不採用になったので一応

Suggestion Backlog Slog, 4/3/2017
https://github.com/Microsoft/TypeScript/issues/14990
https://github.com/Microsoft/TypeScript/issues/563#issuecomment-291300044

602 名前:デフォルトの名無しさん mailto:sage [2017/04/10(月) 14:18:00.18 ID:BK5DCjs2.net]
G

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

604 名前:デフォルトの名無しさん mailto:sage [2017/04/10(月) 18:26:24.79 ID:VEGABUso.net]
>>577
Dartどうすんだよ

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

606 名前:デフォルトの名無しさん mailto:sage [2017/04/11(火) 02:02:21.52 ID:Kcnbnd8w.net]
typescriptでreduxの実装書くのしんどいね

qiita.com/wadahiro/items/7c421b668f28a99e2a29
こいつを参考に書いてるけど。他にいい書き方があれば

607 名前:デフォルトの名無しさん mailto:sage [2017/04/11(火) 07:02:04.43 ID:OeT6CnRN.net]
>>580
おまおれ

mapStateToPropsとかの引数も型どうしていいか分からん

608 名前:デフォルトの名無しさん mailto:sage [2017/04/11(火) 17:04:01.31 ID:ejHOB/DU.net]
>>580
こんなの誰が何に使うの?

609 名前:デフォルトの名無しさん mailto:sage [2017/04/11(火) 19:22:39.80 ID:+8we66Ry.net]
ほんそれ

610 名前:デフォルトの名無しさん mailto:sage [2017/04/11(火) 22:09:52.06 ID:rpuwd/d9.net]
TypeScriptでreact-router-reduxに手を出したら大変な目に遭った。



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

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

613 名前:デフォルトの名無しさん [2017/04/12(水) 19:19:27.95 ID:usx2Dq45.net]
そういうフレームワーク色々あるやん

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

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

616 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 20:56:38.51 ID:IsZRv2xh.net]
そのABCはストリングリテラル型には使えんわけよ。

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

618 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 21:05:36.55 ID:WRJ4LE6o.net]
>>586
つreact native

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

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



621 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 23:08:47.06 ID:0/0fFwi6.net]
>>578
TypeScriptが標準言語になっても、Dartのことは忘れてませんよとGoogle担当者がフォロー
www.publickey1.jp/blog/17/typescriptdartgoogle.html

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

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

624 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 00:19:44.83 ID:rVYtPk7E.net]
ストリングリテラルに推論されるって?
これ通らないでしょ?

const STR = "str";
const ABC: STR = STR;

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

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

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

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

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

630 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 00:44:07.45 ID:7ydi5nIB.net]
変数の型の参照なんて初歩の初歩なんだが教えてやるまい



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

632 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 01:13:36.05 ID:rVYtPk7E.net]
const STR = "str";
type STRT = "str";
const ABC3: STRT=STR;

"str"を2回書かずにABC3が作れればそれでいいんだけど。

633 名前:デフォルトの名無しさん [2017/04/13(木) 01:20:51.05 ID:IFJ42qsr.net]
>>606
const STR = "str";
const ABC3 = STR;

634 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 06:09:08.50 ID:32cPtkAw.net]
type STRT = typeof STR

635 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 08:01:19.65 ID:rVYtPk7E.net]
すまん、確かに思い違いしていたようだ。ありがとう。

636 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 13:00:24.68 ID:XE18llYI.net]
恥ずかしか

637 名前:デフォルトの名無しさん [2017/04/13(木) 20:33:25.78 ID:IFJ42qsr.net]
認めて謝って感謝してるだけ立派だよ

638 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 20:56:40.61 ID:nOhMz2bP.net]
TypeScriptでExpressを使う場合について教えてください。

express-generatorなどのサンプルコードだと new Error したオブジェクトにstatusを
突っ込んで返していたりしますが、ここ、TypeScript的にはどうするのが普通でしょう?
みなさん自前でErrorのサブクラスを定義しているんでしょうか?あるいはどこかに
定番のものがあったりするんでしょうか?

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

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



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

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

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

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

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

646 名前:デフォルトの名無しさん mailto:sage [2017/04/20(木) 11:42:22.36 ID:T7Zz78Cb.net]
>>619
すんません -w -dですね。ホント申し訳ない []
[ここ壊れてます]

648 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:22:59.73 ID:Uj6lwvRH.net]
TypeScriptで動的なキャストみたいなことってできるんでしょうか?

// どこかで定義されたclass
class X {}

interface AX extends X {
a: string;
}

func(x: X) {
if ( xが a: string というプロパティを持っていれば ) {
// ここではxをAXとして扱いたい
}
}

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

650 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 10:55:16.81 ID:scznilxz.net]
>>622
ありがとうございました。うまくいきました。



651 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 12:25:16.92 ID: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 名前:デフォルトの名無しさん mailto:sage [2017/04/27(木) 14:10:54.61 ID:2oprloyo.net]
いやーTypeScriptって本当にいいものですよね
恥ずかしいソース書いてもコンパイルすればそれなりの形になってますし
全ソースが1つにまとまったjsファイルを見るとカタルシスを覚えます
javascriptを扱うのに最高の言語です

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

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

655 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 08:31:59.89 ID: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 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 09:00:40.63 ID:IMlkcp1b.net]
すいませんminifyの件ですが一番の問題は

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

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

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

657 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 15:19:33.29 ID:ZmVIrkLy.net]
Announcing TypeScript 2.3
https://blogs.msdn.microsoft.com/typescript/2017/04/27/announcing-typescript-2-3/

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

659 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 00:20:26.49 ID:Ix6JNrOr.net]
>>631
targetをes5にしてlibに”dom”と”es2017”を設定したら
ちゃんとminifyもできつつasync await とかobject.assaignとか使えました。

typescriptの問題というよりuglify-jsの問題ってことすね。

660 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 08:40:51.51 ID:fFSdol5k.net]
>>630
ギャー!!
適用したらエラーだら



661 名前:ッになった!! []
[ここ壊れてます]

662 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 09:01:35.78 ID:fFSdol5k.net]
アンインストールしたらVSでtsファイル開いても識別子の色分けとかインテリセンスが出てこなくなってVSぶっ壊れたわ
再インストールだなこりゃ

663 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 09:05:24.76 ID:fFSdol5k.net]
2.3アンインストール後に再度2.3インストールしてもぶっ壊れたまま
迂闊に入れないほうがいいなこれ

664 名前:デフォルトの名無しさん [2017/04/29(土) 14:53:43.74 ID:D/W8thCK.net]
馬鹿には無理

665 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 09:24:14.29 ID:V5NYhrdd.net]
不細工ハゲが偉そうに

666 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 11:46:36.73 ID:A3RU6CWl.net]
不細工じゃねーし!

667 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 12:00:27.54 ID:0Jw8BHIT.net]
相対パスでimportしようとすると from ’../../lib/a’ と書くことが多いのですが
..を何とかしようと思いtsconfigでbaseUrlを設定したところ
from ‘lib/a’とかけるようになって素敵だったんですが
生成したjs側で同じように相対パスを使わない方法にできずjs側からimportできなくなりました。
どうすればいいんですかね

668 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 12:07:35.75 ID:VPr4LyhY.net]
deployしてみ

669 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 13:53:10.60 ID:bwYTEyCy.net]
おい、>>638に突っ込めよ!

670 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 14:18:46.56 ID:uAfPQWLU.net]
ハゲに付ける薬なし



671 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 13:56:45.49 ID:1hc/XS6U.net]
jsonのデシリアライズ等で得られた任意のオブジェクトが指定のinterfaceに適合するかどうか
簡単に判定する方法ってないでしょうか?
実行コストがかかるのはしょうがないので、npmのライブラリでもあれば助かります。

672 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 14:12:45.68 ID:y6q+iQAV.net]
実行時に型情報は取得できないので無理

673 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 14:56:45.23 ID:dX7m944z.net]
>>643
俺は各interfaceの定義にtypeを入れてる。

674 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 15:43:26.17 ID:FD8bdV22.net]
>>643
あーなるほどtypesciptのinterface要件を満たしてるかチェックするライブラリかー。
interfaceに対するメタプログラミングができる仕組みってtypescript側に用意されてんのかな

675 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 16:42:03.86 ID:y6q+iQAV.net]
ランゲージサービスから情報引っ張ってコード生成するまでやればできる

676 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 18:22:52.40 ID:s/VndsAg.net]
>>643
初心者なんで教えて欲しいんですが
どう言う状況でそう言うのが必要に
なるんですか?

677 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 22:27:57.85 ID:1hc/XS6U.net]
>>644-648
回答ありがとうございます。
外部から入手したany型のオブジェクトに対して、一度型チェックしたらTypeGuardの下で
扱えたら便利だと思ったんですが、そう単純なものはなさそうですね。
interface毎にUser-Defined Type Guard Functionてのを用意するのが今のところ
いちばんシンプルですかね。

678 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 23:04:54.13 ID:FD8bdV22.net]
>>647
interfaceをparseするの簡単にできたわ
ジェネレータは作れそう。後はObjectを チェックするコードをかければ、、、
そっちがよくわかんないな。

679 名前:デフォルトの名無しさん mailto:sage [2017/05/02(火) 00:15:01.17 ID:79+IkLPk.net]
JSON限定でいいならJSON Schema生成するだけじゃね

680 名前:デフォルトの名無しさん mailto:sage [2017/05/05(金) 00:50:33.95 ID:oXL5lOIH.net]
webpackでtypescript使う時にts-loaderがtypeRootsオプションを認識してくれないような。
自作の定義ファイルを読みに行ってくれない。
結局nodes_modules/@types/においたらうごくんだけど。なんだかなぁ



681 名前:デフォルトの名無しさん [2017/05/05(金) 10:24:07.07 ID:E/UcmmKD.net]
-g

682 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 12:47:49.44 ID:tRHTfDHo.net]
redux のreducer書く時型付きじゃないと死ぬ。
素のjsでよく書ける人いるなぁ

683 名前:デフォルトの名無しさん mailto:sage [2017/05/10(水) 22:53:30.65 ID:TahTqR8d.net]
>>651
これやってみようかと思ったけど、

684 名前:class定義からschema生成するか逆にschemaから生成するか、
どっちがいいか悩ましいなぁ。
[]
[ここ壊れてます]

685 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 06:23:41.84 ID:6GcWGmCe.net]
JSON Schemaの方が表現力がずっと高いから、
実用的に意味があるのは後者だろうね
型だけなら全部空文字と0とfalseでもいいんだから

686 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 06:40:52.39 ID:Uo4oHcSP.net]
JSON Schemaからのdts生成は既存のツールがいくつかあるみたいだな
逆はバリデーションとしてはほぼ無意味かと

687 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 21:37:19.65 ID:Foo76VTo.net]
目的が上で書いているようにシリアライズ-デシリアライズされたオブジェクトの型の復元なら、
interface定義を自分で書いてschemaは裏方というのが自然だとは思うが。
ただ、schemaを生成する方のツールは技術的にハードルが高いせいか選択肢があまりないな。

688 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 21:27:32.04 ID:ZdTGw5ha.net]
そもそもシリアライズという発想自体がJavaScript的でないと思うけどね
データスキーマから入るのがJSでしょ

689 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 22:43:08.64 ID:JDFIgPdx.net]
シリアライズってJSONのこと言ってるわけだろ。
言語自体にサポートの無いC++などと比べてもよっぽど馴染みがあると思うが。
で、JavaScriptだとそこまででいいんだけど、TypeScriptで型まで戻すにはどうするか?って話だろ。

690 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 23:00:01.30 ID:ZdTGw5ha.net]
バリデーションとシリアライズが別系統なのは煩雑じゃない?
コードだけで全部定義するならアノテーション使うなりしてJSON Schema相当の表現力は欲しいし、
割り切って別にするならシリアライズ系の方は中途半端なバリデーションなんかいっそ無しにて
ノーチェックでいいと思うよ



691 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 23:16:34.01 ID:JDFIgPdx.net]
うん、上から目線で何か言いたいという気持ちだけは伝わった。

692 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 23:59:53.11 ID:5dbS9yKw.net]
stackoverflow.com/questions/33800497/check-if-an-object-implements-an-interface-at-runtime-with-typescript
Yesの回答にそれっぽいコードがあるが本当に動作するのか疑問。
他はSchemaを使う回答だが、よほどでないと大袈裟な気も。

693 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 00:46:18.76 ID:6a8gh5yc.net]
自分でコンパイラ拡張して実装したみたいだけどこういうの本家の更新についてけずに陳腐化するのが常だから使えない
ついでにビルドツールなどのエコシステムも使えない

694 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 07:36:06.00 ID:MR0lnxJG.net]
正攻法だとanyを受け取って目的の型のオブジェクトにして返す関数を用意することになるんだろうが、
やることは同じようなものなのにそれぞれ型ごとに個別に用意しなければならないのが煩雑だな。
よっぽど重要な型でしかやりたくない感じ。
確かにこれが、型ガードの感覚で気軽に使えるようになったら便利だと思うけど。

695 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 08:02:09.48 ID:64KrDfHK.net]
TypeScriptの思想的にもスキーマありきで型は後付けの方が自然だと思うわ

696 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 08:27:24.80 ID:MR0lnxJG.net]
その「スキーマ」が何を指しているかよくわからんな。
まさか「JSON schemaありき」って言いたいわけじゃないだろうが。

697 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 09:01:29.19 ID:64KrDfHK.net]
>>667
別に実装は何でもいいんじゃない?
先にJSONドキュメントそのものを設計しろってこと

698 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 10:11:34.64 ID:Jgr59aIg.net]
objectを先に設計してstringifyの方が一般的だと思うが。
つまりtsなら型が先。

699 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 13:21:49.91 ID:xkpWN83w.net]
jsonに対するinterface適用にわざわざスキーマ使うのはだるいな。
やはりメンバにtypeとかを事前に追加しておいて、そこを見てキャストさせるほうが楽だわ。

700 名前:もちろんそのjson自体が自分で改変可能である必要はあるが。 []
[ここ壊れてます]



701 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 13:49:23.26 ID:6a8gh5yc.net]
言語がサポートしてるのはその使い方だからな

702 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 14:24:04.58 ID:KRJlMJox.net]
TypeScript ⇔ JSONSchema を相互に変換するコードは既に転がってるから
どちらでも好みで原本にすれば良いんじゃないの?
まぁあまり自動化を頑張っても、構造が複雑になると結局手書きが必要になる分野だとは思うけど

703 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 14:48:54.41 ID:64KrDfHK.net]
型で記述しきれないバリデーションについてはDecoratorsを使うのがベストなんだろうけど、
interfaceには使えないんだよな
まあJSONだけならそれでもいいかもしれないが

704 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 15:28:34.19 ID:6a8gh5yc.net]
リリースノートも見ずにオレオレソリューションひねり出すのやめない?
https://github.com/Microsoft/TypeScript/wiki/What%27s-new-in-TypeScript#tagged-union-types

705 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 15:33:13.80 ID:4P1sgrCm.net]
interfaceがトランスパイル後に消滅しちゃうの辛いよな。
言語機能でいい感じに残す機能つけてほしいが、そういう提案ってないの?
最近ついたというプラグインで可能になる?

706 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 15:42:38.42 ID:6a8gh5yc.net]
>>663で公式で却下されたと書いてある
まあESの仕様壊すし残当

707 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 15:48:01.77 ID:KRJlMJox.net]
>>674
この文脈 (>>643, 648) では、型フィールドを信用するのはノーチェックと同じ意味だぞ
外部からのデータが、内部的な制約を満たすことの保証を求めてる

708 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 16:10:10.21 ID:6a8gh5yc.net]
いや関数に隠蔽すれば壊すまではいかんか

>>677
入力データの検査も値レベルの制約も手でやること
型システムに求めることじゃない
型を信じてノーチェックが型安全でありそうでなければオーバーヘッドで死ぬ
本人もタイプガードで満足してるしそれが正解

709 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 17:11:36.85 ID:rTo/YyDO.net]
>>676
まぁESの仕様+型だけだから学習コストが低いってのはあるしね。 でも直感的にinterface定義が消えちゃうのはなんだかなぁって気はする。

こうなったらES側に頑張ってもらうしかないな。パターンマッチング付けてー

710 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 18:33:36.63 ID:DGY6L2yw.net]
>>652
コレが解決した。
悩んでいつつも暫定対処で乗り切ってただけに小骨が喉に刺さっているような気分でしたわ。
結論としてはtypeRootsオプションは/// <reference types=".." />
を使う時のpath解決でしか使わないって。
ハンドブックをどう読んでもそう書いているように見えない。



711 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 03:21:08.54 ID:0selKGQ0.net]
typescriptでimmutablejs使ってるけどいまいち恩恵を得づらい。

updateInとかパスが補完効いたり出来ればいいのに

712 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 08:57:46.98 ID:vyfZNbsR.net]
thisを変数に入れたいときの変数名ってみんな何してる?
_thisが使えればいいんだけどなー

713 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 09:08:17.58 ID:Ef+/+PyI.net]
変数に入れた後のthisはthisなんですか・・・・?

714 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 09:09:32.94 ID:lCCVb2h3.net]
thatだがそもそもそんなこと必要にならない

715 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 09:20:29.61 ID:8OnrstJc.net]
JavaScriptのクロージャにおけるthis問題の回避はselfが定番
TypeScriptで必要なケースは少ないはずだけど

716 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 09:43:18.53 ID:LceXbV2F.net]
>>682
_thisはダメなの?

717 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 10:31:35.82 ID:QxLZOlf9.net]
_thisは重複エラーになっちゃうんでやすよね
目的としては、deferredを返すfunctionがあって、その返り値のdoneで呼び元のthisを使いたいんです

718 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 11:16:51.90 ID:Ef+/+PyI.net]
やりたいことが分からん
コード例plz

719 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 11:38:44.20 ID:lCCVb2h3.net]
アロー関数で済むやつでは

720 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 12:13:45.27 ID:QxLZOlf9.net]
>>688
var testFucntion = () => {

    var defer = $.Deferred();

    defer.resolve("a");

    return defer.promise();

}

 

var hoge: string;

testFucntion()

    .done(function (data: string) {

        this.hoge(data);

    })

こんな感じ



721 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 12:15:24.11 ID:Ef+/+PyI.net]
>>690
>>689

722 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 12:17:24.53 ID:lCCVb2h3.net]
草www

723 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 12:20:14.11 ID:jbvcqQ/c.net]
自演乙としか

724 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 23:52:05.01 ID:7H2+/kur.net]
functionが自然な場所は、アローにしてて、
アローで解決できる箇所はfunctionなのはなぜ。

725 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 02:14:50.79 ID:QIr3+kxI.net]
>>690
doneのほうをアロー式にしたらいいんやで
あとvsで開発してる場合、デバッグ時にウォッチしたとき、そのthisにはtestFucntionが入るけど
実際にはちゃんと使いたい値が入ってるから安心しな

726 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 09:18:06.31 ID:bm3mvh5f.net]
アロー使えばselfいらないって知った時感動した

727 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 01:06:25.77 ID:ioiT3hTG.net]
Angular(2以降)の話題もここでよろしょうございますか?

728 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 02:05:52.05 ID:fuFkI60h.net]
まったくではないが違うんじゃないか?

729 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 05:58:20.77 ID:xlmC5HkR.net]
medaka.2ch.net/test/read.cgi/php/1415599223/

730 名前:デフォルトの名無しさん mailto:!sage [2017/06/11(日) 19:15:01.32 ID:AskXGu9A.net]
interface A{
 x:string;
 y:string;
}

interface B extends A{
 x:number;
}

が型の互換性エラーになるの何とかならない?
let a={x:'hoge',y:'foo'};
let b={...a,{x:1}};

みたいな事は出来るのにbを現す型を簡単に定義出来ないのが辛い



731 名前:デフォルトの名無しさん [2017/06/11(日) 19:18:40.94 ID:AskXGu9A.net]
>>697
ngxのスレは別にある

732 名前:デフォルトの名無しさん [2017/06/11(日) 19:55:36.52 ID:AskXGu9A.net]
>>699
2以降はこっち
mevius.2ch.net/test/read.cgi/hp/1484055394/

733 名前:デフォルトの名無しさん [2017/06/11(日) 20:29:27.66 ID:zURolSWc.net]
>>700
型が変わったら継承できないのは当たり前では?

interface Parent {
x: string | number;
y: string;
}

interface A extends Parent {
x: string;
}

interface B extends Parent {
x: number;
}

こういう関係が正しい関係では?

734 名前:デフォルトの名無しさん mailto:sage [2017/06/11(日) 21:09:00.82 ID:y28miZDE.net]
理解してない奴を炙り出すのにも静的チェックは必要なんやなって

735 名前:デフォルトの名無しさん mailto:sage [2017/06/11(日) 21:21:16.05 ID:QZNztTAY.net]
>>703
プロパティだとセットのときを考えるとcontravariantじゃないとダメだしゲットのときにはcovariantじゃないとダメだから結局invariantが必要になるような気がする
アクセサならsetのパラメタとgetの返却値で型が異なってもいいから問題ないと思うけど

736 名前:デフォルトの名無しさん [2017/06/11(日) 22:09:32.03 ID:AskXGu9A.net]
>>703
継承出来ないのは当たり前って言うのは分かる
ただ上書きする構文が欲しい

737 名前:デフォルトの名無しさん mailto:sage [2017/06/11(日) 22:13:08.61 ID:QZNztTAY.net]
>>706
ジェネリクスあるし上書きする構文が必要になる状況が分からん

738 名前:デフォルトの名無しさん [2017/06/11(日) 22:22:11.45 ID:eD+QASKK.net]
上書きなんぞせずとも別の名前付ければよくね?
デメリットしか思い付かないし実装されないと思うが、仮に実装されたとしても予想される実装方法はBの型を通してアクセスしたときは型名とかをprefix付けた別名になるようにトランスパイルされるようになるだけでしょ

739 名前:デフォルトの名無しさん mailto:sage [2017/06/11(日) 23:47:19.06 ID:fVYgJSKO.net]
extends Aじゃないけどその定義を流用してBを定義したいということか?

740 名前:デフォルトの名無しさん [2017/06/11(日) 23:48:25.17 ID:AskXGu9A.net]
>>709
そういう事



741 名前:デフォルトの名無しさん [2017/06/11(日) 23:49:49.29 ID:AskXGu9A.net]
B extends Aじゃないから当然
(hoge:B)=>{
let foo:A=hoge;
}

みたいな事は出来なくて良い(というか出来ない)

742 名前:デフォルトの名無しさん mailto:sage [2017/06/12(月) 00:58:34.90 ID:F6aJQHtJ.net]
継承じゃないんだから諦めてジェネリクス使いなよ

743 名前:デフォルトの名無しさん mailto:sage [2017/06/12(月) 08:01:38.24 ID:9hAA1jJ7.net]
世の中にxがstringかnumberの場合があるのなら、x: string | number という定義が正しい気がしますが

744 名前:デフォルトの名無しさん mailto:sage [2017/06/12(月) 08:11:52.28 ID:R1uj6Z8h.net]
ジェネリクスだと>>700の問題がどこまで解決できるんだろう。

745 名前:デフォルトの名無しさん mailto:sage [2017/06/12(月) 08:26:45.30 ID:vVucOmau.net]
>>714
interface X<T> {
 x: T;
 y: string;
}
interface A extends X<string> { }
interface B extends X<number> { }

746 名前:デフォルトの名無しさん [2017/06/12(月) 18:05:51.91 ID:i2S9/2aT.net]
flowとtypescriptって
どっちが良いの?

747 名前:デフォルトの名無しさん [2017/06/12(月) 18:14:08.97 ID:/bUB16QZ.net]
>>716
圧倒的TypeScript
異論は見ろめない

748 名前:デフォルトの名無しさん mailto:sage [2017/06/12(月) 21:00:25.44 ID:5UNDPLtW.net]
酔うの早すぎるだろ

749 名前:デフォルトの名無しさん mailto:sage [2017/06/13(火) 22:10:43.81 ID:PMWJJsvl.net]
Announcing TypeScript 2.4 RC
https://blogs.msdn.microsoft.com/typescript/2017/06/12/announcing-typescript-2-4-rc/

750 名前:デフォルトの名無しさん mailto:sage [2017/06/14(水) 08:28:34.92 ID:TtxDPC/b.net]
enumってstring literal型出てからほぼ使わなくなったからなあ
コード内でimportできるのもよくわからん
何がよくなったんだ



751 名前:デフォルトの名無しさん mailto:sage [2017/06/14(水) 09:04:40.52 ID:t483F9YG.net]
新importは関数であることに意味がある

752 名前:デフォルトの名無しさん mailto:sage [2017/06/14(水) 21:28:45.57 ID:YgZhsY+k.net]
>>721
なるほど Promiseで返すってことはasync await 前提なんかな。
ちょっと非同期周りで互換性のないライブラリ使ってると途端に不便になるから
一長一短ではあるんだけど。全部がPromise使うライブラリで固められれば便利になるんかな。

753 名前:デフォルトの名無しさん mailto:sage [2017/06/14(水) 21:29:54.91 ID:YgZhsY+k.net]
jsの仕様変更そろそろ収まって欲しい。
import周りってこれで安定するようになるのかな。

754 名前:デフォルトの名無しさん mailto:sage [2017/06/15(木) 19:20:45.69 ID:Zba3QY3O.net]
filterの中でasync await って使えないんですかね?

755 名前:デフォルトの名無しさん [2017/06/15(木) 19:24:11.68 ID:xqojsLNP.net]
>>724
無理
rxjs使うか設計見なおせ
具体的に何をしたい?

756 名前:デフォルトの名無しさん mailto:sage [2017/06/15(木) 21:25:19.64 ID:Zba3QY3O.net]
filterの評価関数を作ろうとした時に、今まで作ったやつが全部プロミス返す設計になっていたので、
シームレスに使おうとしたらasync-awaitを使えないかなーと。
将来的にここもasync await使えるようになるのかな。
結局ループを回して絞込処理を実装しましたわ。

757 名前:デフォルトの名無しさん [2017/06/15(木) 21:30:12.69 ID:xqojsLNP.net]
rxjs使え

758 名前:デフォルトの名無しさん [2017/06/15(木) 21:32:03.12 ID:xqojsLNP.net]
それか自作。そんなに難しくないぞ

759 名前:デフォルトの名無しさん mailto:sage [2017/06/16(金) 01:22:09.50 ID:uNQVqIhb ]
[ここ壊れてます]

760 名前:.net mailto: rx推しが謎すぎる。 []
[ここ壊れてます]



761 名前:デフォルトの名無しさん mailto:sage [2017/06/16(金) 07:51:13.34 ID:VSZ6CfqO.net]
ループでawaitしちゃうってパフォーマンス悪くない?
await promise.all([].map(async () => {}))

こういうのが普通では?

762 名前:デフォルトの名無しさん mailto:sage [2017/06/16(金) 12:37:39.06 ID:uNQVqIhb.net]
>>730
ずっとpromise.allの存在を失念してた。
これでmap的な使い方できるね。


ところでtypescriptのプロジェクトで自作helperライブラリを使う時にいちいちimportを使うのが面倒くさいんで
自動でimportする設定ってtsconfigにないかな?

763 名前:デフォルトの名無しさん mailto:sage [2017/06/17(土) 10:56:23.79 ID:254ieyWi.net]
typescript便利だけどやっぱり型が後付の弊害がなかなかしんどい。
nullを許

764 名前:容しない前提かと思って使っても結局
実体はnullが突っ込んであったり する。
[]
[ここ壊れてます]

765 名前:デフォルトの名無しさん mailto:sage [2017/06/17(土) 17:32:41.06 ID:Jhwo6DZg.net]
弊害じゃなくて人為的ミス
誤りに気付いた者が正せばいい

766 名前:デフォルトの名無しさん mailto:sage [2017/06/17(土) 22:27:47.68 ID:254ieyWi.net]
swaggerのジェネレーターが出すコードなんだよね。プルリク出すのが面倒です

767 名前:デフォルトの名無しさん mailto:sage [2017/06/18(日) 00:50:13.20 ID:GScuub4f.net]
サーバーサイドの言語仕様とswaggerがstrict null checkに対応してないだけであって
typescriptは何も悪くないのでは

768 名前:デフォルトの名無しさん [2017/06/18(日) 15:17:38.51 ID:xPH4G83l.net]
ほんそれ

769 名前:デフォルトの名無しさん mailto:sage [2017/06/18(日) 20:34:02.75 ID:9Ms8Oqe4.net]
>>735
本体がstrict null check対応しても
モジュール側が対応してないとそこは無視するってことです?
例えばモジュールが強制的に T | undefined | null 型になるとかならいいんですけどね

770 名前:デフォルトの名無しさん mailto:sage [2017/06/19(月) 00:15:28.42 ID:2IBzsU2g.net]
type Action =
{
type: “A”,
id: number
} |
{
type: “B”,
payload: any
} ….

みたいな定義がある時に

interface ALias {
[type: Action.type]: () => any;
}

export default <Alias> {
“A”: func1,
“B”: func2,
}

みたいに書けないですかね?
つまりAction.typeをinterface の条件に入れたいってことなんですが。



771 名前:デフォルトの名無しさん mailto:sage [2017/06/19(月) 09:56:19.65 ID:nrLP7Uu1.net]
インデックスシグネチャがstringかnumberしか受け入れない現状では
Aliasを定義する時点でキー(Action.typeの値)が
分かってるなら interface Alias { 'A'?: Func; 'B'?: Func; }
分からないなら interface Alias { [type: string]: Func; }

772 名前:デフォルトの名無しさん mailto:sage [2017/06/19(月) 20:30:47.90 ID:8qDOjcU2.net]
>>731
interface Actions {
A: {id: number};
B: {payload: any}
}


interface Arias {[key in keyof Actions]: () => Actions[key]}

こういうことかな?

773 名前:デフォルトの名無しさん [2017/06/19(月) 21:29:43.40 ID:GKod7M3S.net]
携帯から書いたけどエラー起きてるし意図理解できてなかった。
こういうことかな?
type Action = { type: "A" } | {type: "B"};
type Arias = {[K in Action["type"]]: () => void}
i.imgur.com/17xtAlw.png

774 名前:デフォルトの名無しさん mailto:sage [2017/06/19(月) 22:19:36.13 ID:p+TikfUB.net]
Arias(笑)

775 名前:デフォルトの名無しさん mailto:sage [2017/06/20(火) 16:14:46.75 ID:Nl8VP77v.net]
>>741
おー。聞いてみて良かったです。半分諦めてたんで。
上手く動きました。ありがとうございます。

776 名前:デフォルトの名無しさん mailto:sage [2017/06/21(水) 12:13:37.61 ID:qahQSwg3.net]
>>743
もっとこういう質問で賑わってほしい
書いてて気持ちいい言語だから
angularやreactは流行らなくていいけどフロント開発の標準はtypescriptになってほしい

777 名前:デフォルトの名無しさん mailto:sage [2017/06/21(水) 14:47:30.10 ID:CAzvCkNY.net]
>>744
定義ファイルがなくて自作するハメになると途端に苦痛になるけどな。
あとReactというかReduxつかってて合わせてimmutable.js使ってると
いつの間にかclassがjsonに変わってることがあってその場合はtypescriptの型と合わなくなるから
しんどい。型が後付じゃない言語ならこういうことがないから、ちょっと辛い。
結局reducer内で使う時にjsonからimmuatblejsのclassに変換して
state返す時にjsonに戻す処理を毎回入れる方針になった。

immutable.jsは全然typescriptと相性が良くない。
XXX.set(‘member’, value) みたいな構文になるから。
もっとtypescriptで使いやすいimmutableなライブラリないかしら。

778 名前:デフォルトの名無しさん [2017/06/21(水) 16:08:20.66 ID:QjjhDd/n.net]
>>745
新バージョンではXXX.setが型安全になるからもう少し待て
リテラル型とkeyofを使うらしい

779 名前:デフォルトの名無しさん mailto:sage [2017/06/21(水) 19:23:40.28 ID:CAzvCkNY.net]
https://goo.gl/7Ty7Tq

780 名前:
こんな感じのコードでファイルのアップロード処理を作りたいんですが
上手く動かなくて悩んでいます。 お助け下さい
[]
[ここ壊れてます]



781 名前:デフォルトの名無しさん [2017/06/21(水) 21:09:26.65 ID:nUhsZ0ik.net]
>>747
ブラウザのセキュリティ設定で、`input.click()`はfileエレメントには効かないみたいですね。
https://stackoverflow.com/questions/210643/in-javascript-can-i-make-a-click-event-fire-programmatically-for-a-file-input

782 名前:デフォルトの名無しさん [2017/06/21(水) 21:50:59.59 ID:nUhsZ0ik.net]
>>745
immutablejsというのは使ったことないけど、
XXX.set(‘member’, value)みたいな処理もkeyof使ってラップしてあげればkey毎に違う型のvalueに対応できる。
例えばES6のMap<K,V>クラスをラップすれば以下みたいなこともできる。
まあ新しいバージョンで対応されるならわざわざラップクラス作る必要ないがw
class TypeSafeMap...(省略

interface IObject {
name: string;
height: number;
isYes: boolean;
}

const safeMap = new TypeSafeMap<IObject>();
safeMap.get("name") // string型
safeMap.get("height") // number型
safeMap.set("name", 1) // NG
safeMap.set("name", "one") // OK

https://goo.gl/j6hy4T

783 名前:デフォルトの名無しさん mailto:sage [2017/06/21(水) 22:49:52.97 ID:CAzvCkNY.net]
>>748
こちらは結局 イベントリスナーをcickではなくchange にすることで上手く動くようになりました。

>>749
typescriptのジェネリクスの性能いいですね。
結構知らない機能がまだありそう。

784 名前:デフォルトの名無しさん mailto:sage [2017/06/22(木) 00:17:25.62 ID:u6z6+xvR.net]
>>750
それはよかったです、てっきりclickイベントをjsで発火させてファイル選択ダイアログを自動で開かせたいのか思ったw

785 名前:デフォルトの名無しさん mailto:sage [2017/06/22(木) 17:18:45.24 ID:77+4f1XL.net]
>>751
そうなんですけどリスナーのイベント指定がclickではなくchnageだったってことです。
https://goo.gl/QHZCsG

before
i.addEventListener(‘click’, async (e) => {
after
i.addEventListener('change', async (e) => {

786 名前:デフォルトの名無しさん mailto:sage [2017/06/22(木) 18:30:45.28 ID:b2Lz7aux.net]
>>752
たしかのそれもひとつの原因ですね
ですがclickイベントの発火も多分動かないのでは?chブラウザにもよると思いますがchromeで動かなかったですよ

787 名前:デフォルトの名無しさん mailto:sage [2017/06/22(木) 19:47:44.81 ID:77+4f1XL.net]
>>753
動きましたよ。少なくともchromeでは。動くコードを>>752に貼ったんで

788 名前:デフォルトの名無しさん [2017/06/22(木) 20:06:21.77 ID:u6z6+xvR.net]
>>754
>>752は手動のクリックイベントからclick発火してるので動きますね
>>747はsettimeout内でclick発火してるので、動かないです

789 名前:デフォルトの名無しさん mailto:sage [2017/06/24(土) 00:04:21.44 ID:7kzB7ca0.net]
typescriptでreduxのミドルウェア書いてる人っていませんか?

export interface Middleware {
<S>(api: MiddlewareAPI<S>): (next: Dispatch<S>) => Dispatch<S>;
}

上記interfaceを満たすコードを書けなくて困ってます。サンプルコード的なのどっかにないですかね?

790 名前:デフォルトの名無しさん [2017/06/25(日) 15:04:59.28 ID:k1gomwYO.net]
reduxってreact関係の何かなのかな?
相変わらずreactの作法は意味不明
流行らずに消えてほしい



791 名前:デフォルトの名無しさん mailto:sage [2017/06/25(日) 15:18:46.73 ID:dKXT3hQ7.net]
すみません
今パッケージングというのかライブラリのシステムは何を使うのが正解何ですか?
electronやってみようと思ってタイプライブラリをいれようと思っていろいろなサイト見てやってるんですが
どれも失敗します

今の定番の方法を紹介してるサイトってありませんか?
それとも今は時期がまずいんでしょうか?

792 名前:デフォルトの名無しさん mailto:sage [2017/06/25(日) 16:41:50.61 ID:OCPIhIaN.net]
npm -i @types/XXXX

793 名前:デフォルトの名無しさん mailto:sage [2017/06/25(日) 17:11:28.11 ID:k1gomwYO.net]
>>758
よくわからないけどelectronのtypescript開発は少しややこしい
メインプロセス側と画面側でプロジェクト分けるのが主流で、メインプロセス側はgulpビルド、画面側はwebpackビルドみたいになって少しややこしい

794 名前:デフォルトの名無しさん mailto:sage [2017/06/25(日) 19:32:19.06 ID:o1GCb4AX.net]
回答ありがとうございました

もうしばらく待ってみます

795 名前:デフォルトの名無しさん mailto:sage [2017/06/26(月) 10:42:55.52 ID:B+I0vs4D.net]
>>757
はやっちゃってるんだよなぁ。
React自体は凄くTypeScriptとの親和性は高い。というかむしろ推奨しているくらい。
ただReduxはTypeScriptからどう使えばいいのかよくわからなくて

796 名前:デフォルトの名無しさん mailto:sage [2017/06/26(月) 15:37:27.06 ID:B+I0vs4D.net]
>>756
自己解決したので書いておきます
ただのロガーの場合

import { Action } from 'actions';
import { State } from 'reducers';

export function myMiddleware(store: redux.MiddlewareAPI<State>):
(next: redux.Dispatch<State>) => redux.Dispatch<State> {
return (next: redux.Dispatch<State>) => (action: Action): Action => {
console.log(store.getState());
let result = next(action);
console.log(store.getState());
return result;
};
}

797 名前:デフォルトの名無しさん mailto:sage [2017/06/27(火) 16:22:46.76 ID:xkXC4vKS.net]
typescriptで書かれてる有名なライブラリって何があるの?
Rx.jsはtypeScriptで書かれてたね。

798 名前:デフォルトの名無しさん [2017/06/27(火) 16:42:32.21 ID:mpuQzI8/.net]
フレームワークだけどngx

799 名前:デフォルトの名無しさん mailto:sage [2017/06/27(火) 18:35:39.52 ID:5NUjqPYf.net]
Dartどっかいったな

800 名前:デフォルトの名無しさん [2017/06/27(火) 19:04:32.75 ID:mpuQzI8/.net]
googleが作る言語はゴミばっかだからしゃーない
言語のセンスは圧倒的にMSの方が上
MSというよりヘルスバーグが有能すぎる



801 名前:デフォルトの名無しさん mailto:sage [2017/06/27(火) 22:13:14.24 ID:xkXC4vKS.net]
>>767
goはいいぞ。素朴でモダンという相反する要素を持ち合わせてる。
エコシステムはモダン。
言語仕様は素朴。

802 名前:デフォルトの名無しさん mailto:sage [2017/06/27(火) 22:20:02.75 ID:rQeMEWtY.net]
J++とかJ#とかManaged C++とか割と救いようのないものも作ってるけどねMicrosoft
でも全体としては確かに良い言語が多い印象

Googleの言語もGoとか(使ったことないけど)人気みたいだし, そもそも作った言語の数が大分違う気が

803 名前:デフォルトの名無しさん [2017/06/27(火) 23:37:36.64 ID:mpuQzI8/.net]
>>768
ジェネリクス追加されるまでは様子見…

804 名前:デフォルトの名無しさん mailto:sage [2017/06/28(水) 03:33:15.38 ID:4SuBLGV6.net]
マイクロソフトはvsc出したときはなんでatomの二番煎じやってんのって思ったけどやはり製品としての完成度高くて感動する。
開発環境作らせたら最強と言う噂は伊達じゃない。

805 名前:デフォルトの名無しさん mailto:sage [2017/06/28(水) 09:12:54.31 ID:9HmGLvwZ.net]
>>764
angular2

806 名前:デフォルトの名無しさん mailto:sage [2017/06/28(水) 14:22:19.39 ID:R0ZTQr0d.net]
Announcing TypeScript 2.4
https://blogs.msdn.microsoft.com/typescript/2017/06/27/announcing-typescript-2-4/

807 名前:デフォルトの名無しさん [2017/06/28(水) 16:15:00.25 ID:7uiFkJf0.net]
MSは言語と開発環境では最強
ネットや機械学習ならGoogle
アップルは…嫌い

808 名前:デフォルトの名無しさん mailto:sage [2017/06/28(水) 16:19:23.04 ID:DxMay05+.net]
MSは言語と開発環境では最強
ネットや機械学習ならGoogle
アップルは…嫌い

809 名前:デフォルトの名無しさん [2017/06/28(水) 16:28:12.57 ID:7uiFkJf0.net]
>>775
何こいつ怖い

810 名前:デフォルトの名無しさん mailto:sage [2017/06/29(木) 16:13:29.70 ID:f9ij8X2q.net]
すいません。

例えば以下のようにアクションを定義してあったとして

export type Action =
{
type: 'FETCH_MAIN_FEEDS';
} |
{
type: 'SET_MAIN_FFEDS';
payload: comm.Contentlist;
} |
{
type: 'DO_NOTHING'
};



ジェスリクスの仕組みを使って
type ActionType = 'FETCH_MAIN_FEEDS' | 'SET_MAIN_FFEDS' | 'DO_NOTHING'
をActionの内容変更に合わせて自動的に作る方法ってないですかね



811 名前:デフォルトの名無しさん mailto:sage [2017/06/29(木) 16:20:59.60 ID:f9ij8X2q.net]
自己解決
export type Action =
{
type: 'FETCH_MAIN_FEEDS';
payload: undefined;
} |
{
type: 'SET_MAIN_FFEDS';
payload: comm.Contentlist;
} |
{
type: 'DO_NOTHING';
payload: undefined;
};

type ActionType = Action['type'];
type PayloadType = Action['payload'];


思いの外簡単であった

812 名前:デフォルトの名無しさん mailto:sage [2017/07/10(月) 13:26:30.50 ID:gqDySAuG.net]
typescriptのエラーってよくわかんないことある

(81,32): error TS2322: Type '{ path: "/logout"; component: typeof Logout; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes<Route> & Readonly<{ children?: ReactNode; }> & Rea...'.
Type '{ path: "/logout"; component: typeof Logout; }' is not assignable to type 'Readonly<RouteProps>'.
Types of property 'component' are incompatible.
Type 'typeof Logout' is not assignable to type 'StatelessComponent<RouteComponentProps<any> | undefined> | ComponentClass<RouteComponentProps<any...'.
Type 'typeof Logout' is not assignable to type 'ComponentClass<RouteComponentProps<any> | undefined>'.

ってでて、何のことかわからない。

偶然解決して、総合するとReact.Componet<P,S>のSをvoidに指定は駄目ってことらしい。
上記エラーメッセージからどう読み取ればそういうことなわけ?

813 名前:デフォルトの名無しさん mailto:sage [2017/07/10(月) 19:20:13.57 ID:lPQJaLkK.net]
template登場したての頃のc++みたいだな

814 名前:デフォルトの名無しさん mailto:sage [2017/07/12(水) 20:52:57.67 ID:iKt9vtZC.net]
@typesやパッケージ自身が持っているd.tsに問題があるとき、自分のプロジェクト内で
部分的に修正版と差し替えたりできないのかな?
Typescript2.4に上げたらいくつかのパッケージがエラーを出すようになってしまったんで
大元が対応するまでの間ちょっと回避したいんだが。

815 名前:デフォルトの名無しさん mailto:sage [2017/07/12(水) 21:44:01.43 ID:46U9BX05.net]
>>781
https://teratail.com/questions/83920

816 名前:デフォルトの名無しさん mailto:sage [2017/07/12(水) 22:50:59.04 ID:iKt9vtZC.net]
リンク先のそれは解決法として正しいのかという疑問はあるがとりあえず、declareで
定義を上書きできるということかな。試してみるわ。ありがとう。

817 名前:デフォルトの名無しさん mailto:sage [2017/07/13(木) 12:11:08.28 ID:SeGC5rTL.net]
ここでredux-observale薦めてもらったのもあって試してるんだけど
epicを書く時 action$.ofType('FIRST’)って書いてfilterするのはいいんだけど返ってくる
Observaleがtype:’FIRST’に絞り込められてくれない。
無理やりキャストして使えってこと?
いい方法教えてください

818 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 00:10:59.94 ID:UTvPeefr.net]
VS2017は2015と違ってJavaScriptで
var a = {};
a.b = 1;
と書いてその下に「a.」と入力しても候補にnumber型プロパティとしてのbはない
TypeScriptのnamespaceがブラウザの生JavaScriptでも使えるようになったら便利そうなんだけどな

819 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 15:42:06.74 ID:AYnLv9ir.net]
>>783
いやいや。具体的に指摘してほしいな。
reduxのactionは基本的にobjectであれば何でもあり。というスタンスのもの

820 名前:
そのactionに継承関係を設定してるのはたまたま定義ファイルの作者がなんとなく決めた程度のものでしかない。

となると元々の定義を修正してしまっても不都合はないと思うんだが。

更にいうとreduxのmiddlewareの定義ファイルも、結構declareで大元のreudxの定義を改変してる。
(redux-thunkとかredux-promiseとか)
[]
[ここ壊れてます]



821 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 22:07:24.48 ID:Ukk3qL4L.net]
「具体的に」と言っている当人が具体的にに何を指摘しているのかわからない件

822 名前:デフォルトの名無しさん mailto:sage [2017/07/17(月) 02:22:25.78 ID:HJdOjxBV.net]
モジュール拡張書いてる人っていますか?
ローカルではうまく書けるんだけど、
npmで管理して外部モジュール化しようとするとうまく動かなく

823 名前:ネる。
jsとd.tsに別れるとだめなんだろうか、、、、。
なんか参考になるnpmライブラリが有るなら事に教えてくださいm(_ _)m
[]
[ここ壊れてます]

824 名前:デフォルトの名無しさん [2017/07/17(月) 09:24:35.44 ID:3rVoB3WX.net]
>>788
jsとd.tsを同じ所に置けばおk
angularとか参考になるよ

825 名前:デフォルトの名無しさん mailto:sage [2017/07/17(月) 12:07:57.24 ID:HJdOjxBV.net]
>>789
ありがとうざいます。js とd.tsは同じ場所においてます、、、、
ちょっとangularはわからなかったのですが
rxjs5はoperatorをモジュール拡張の仕組みを使っているので参考になりました。
それを元に書いてるんですが、、、
どうしてもうまくいかないです。

826 名前:デフォルトの名無しさん [2017/07/17(月) 12:30:35.11 ID:3rVoB3WX.net]
>>790
npm rxjsした時のフォルダ構成とビルド結果が同じようにすればおk
もちろんパッケージ.jspnとかもな

827 名前:デフォルトの名無しさん mailto:sage [2017/07/20(木) 13:43:30.16 ID:9ngnJ+y5.net]
typescriptってユーザー数多そうなのに
どこに生息してるん?
teratailもあんまりいなさそうだし。slackとかかね?
おせーてください

828 名前:デフォルトの名無しさん mailto:sage [2017/07/20(木) 15:04:36.06 ID:heFqzBlt.net]
typescript は google 社員御用達だぞ
ここのレスも 99 割が google 社員のもの

829 名前:デフォルトの名無しさん mailto:sage [2017/07/20(木) 15:14:04.11 ID:9ngnJ+y5.net]
MSとgoogleのマリアージュとか最高じゃないかな。

830 名前:デフォルトの名無しさん [2017/07/20(木) 17:31:24.01.net]
>>792
TypeScriptはほぼJSだから他の言語と違って特に質問するような事ないし…



831 名前:デフォルトの名無しさん mailto:sage [2017/07/20(木) 20:56:24.88.net]
>>795
定義ファイル周りとか結構悩むことない?
例えばreduxとかそのまま使うとTypeScriptの補完機能を活かしきれなくて
typescript-fsaとかを使って補強してやると凄く調子良く動く。

832 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 10:18:51.65 ID:O7VztC89.net]
https://jp.vuejs.org/v2/guide/typescript.html
vuejsもtypescriptとの親和性上がってるのかな。
昔はいまいちだったんだけど

833 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 21:08:46.09 ID:O7VztC89.net]
typescriptでjest使ってる人っています?
行番号がめちゃくちゃになっちゃうんですが、どうすればいいんですかね?
inlinesoucrmap: trueにセットしても改善せず。
行番号以外は上手く動いてるんですけどね。

834 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 23:55:24.33 ID:W7NHR4pI.net]
es2015とかes2017はどうかな?
async await使えるの幸せ。

835 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 14:06:03.33 ID:GUb8aQei.net]
さすが俺達のTypeScript

TypeScripts Type System is Turing Complete
https://github.com/Microsoft/TypeScript/issues/14833

836 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 19:19:00.00 ID:WxFDmNeE.net]
>>800
ジェネリグスだけでプログラミングできるってこと?
わけわかめ

837 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 00:27:45.60 ID:LmyTNXHn.net]
ようやくHTML+CSSに追いついたわけだな
https://cpplover.blogspot.com/2013/10/blog-post_20.html

838 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 11:10:59.59 ID:3DdLvbHE.net]
tsconfig.json で noImplicitAny をtrueにしてみたら、npmからのモジュールをimportしている部分で
こういうエラーが大量に出るようになってしまった。

error TS7016: Could not find a declaration file for module 'モジュール名'.

importをrequireに戻したら逆に不便だし、自分で .d.ts を用意するには数が多すぎて追いつかない。
noImplicitAny の対象を自分のコードのみに限定する(node_modules以下を対象外とする)
なんてことはできないんだろうか。

839 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 11:34:41.06 ID:DE4QKP9/.net]
>>803
俺は普通に使えてるけどな。tsconfig全体を貼ってみたら?

840 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 11:38:02.30 ID:DE4QKP9/.net]
あと使ってるライブラリも。ライブラリによって違うのかな?
俺はreduxとかreactとかm



841 名前:oment.jsとかimmutable.jsとか色々入れてるけど
特にそういう不具合が起きたことはないな。
多分デフォルトでtsconfigの中身はnode_modules対象外な気がする。

一応聞くけどwebpack使ってないよね?
[]
[ここ壊れてます]

842 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 11:51:37.20 ID:3DdLvbHE.net]
このへんのモジュールが引っ掛かった。全部じゃないけど。

react-spin
cookie-parser
uuid-parse

>一応聞くけどwebpack使ってないよね?

そう、webpack使ってる。

module: {
rules: [
{
exclude: /(node_modules)/,
test: /\.[jt]s$/,
use: [ { loader: 'ts-loader', options: { configFileName: "tsconfig.json", } } ]
}
]
},

tsconfig.json はこんな感じ。
{
"compilerOptions": {
"module": "commonjs",
"target": "es6", "allowJs": true, "strictNullChecks": false,
"noImplicitAny": false, "noImplicitThis": true, "noImplicitReturns": true, "sourceMap": true
},

"exclude": [ "node_modules" ]
}

excludeの設定を間違えているのかな?

843 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 15:39:16.07 ID:DE4QKP9/.net]
なんだ、全部のd.tsが見つからないって言ってるわけじゃないなら、node_modules関係なくない?
足りないd.tsファイルは自作するしかないでしょ。インストールしたのに見つからないなら問題だけど

844 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 15:56:35.18 ID:DE4QKP9/.net]
webpackのresolveが抜けてるんじゃない?

resolve: {
extensions: ['.ts', '.tsx', '.js', '.jsx'],
modules: [
"node_modules/"
]
},

845 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 16:09:16.06 ID:DE4QKP9/.net]
>react-spin
あとreact-spinは型定義にないみたいね。でもこれくらいなら五分で自作できるから大丈夫。

846 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 18:30:45.13 ID:3DdLvbHE.net]
>>807
noImplicitAny = false なら .d.ts が無くても使えていたんで何か方法はないかと思ったけど、
無いならしょうがないね。ありがとう。

847 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:23:03.92 ID:DE4QKP9/.net]
>>810
いやいや。簡単だから諦めないでよ。特にreact-componentなら簡単に自作できる

https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/material-ui-pagination/index.d.ts
これとか参考になると思う

848 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:49:53.59 ID:3DdLvbHE.net]
最初に書いたとおり、単に数が多いからやってられんてだけ。

849 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:58:06.64 ID:DE4QKP9/.net]
>>812
あーなるほど失礼
もともとjs案件だったってこと?

850 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 21:25:13.43 ID:LJmg41iW.net]
(new Error()).stack みたく 実行箇所のtsファイル名と行番号を取得する方法ってないですかね。
プリプロセッサみたくコンパイルする過程でファイル名と行番号に変換するような定数があればいいんですけど



851 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 09:46:45.08 ID:yLrj+bDi.net]
o : any が"x"というメンバーを持っているか調べるのは if ("x" in o) でできるけど、
o.x の型がstringかどうか調べようと if (typeof o["x"] === "string") とやるとESlintの
no-string-literalに引っかかってしまう。
このルールを無効にする以外にメンバーの型をチェックする方法ってないですかね?

852 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 14:18:14.33 ID:tN8D0FqC.net]
>>815
無理 any型を使ってる時点でtsにできることは無い

853 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 14:30:58.84 ID:Yyv6Foyi.net]
>>815
一旦変数に入れてからアクセスすればいいんじゃない

const x = "x";
if (typeof o[x] === "string") { ...

854 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 15:31:46.37 ID:yLrj+bDi.net]
>>817
なるほど、そんな方法が。うまくいったみたい。ありがとう。
使う直前で変数に入れるならdisableにするのとさほど変わらないけど、メンバー名はどこかで
一元管理しておけってことかな。

855 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 17:11:17.08 ID:tN8D0FqC.net]
>>818
単に変数oにinterface定義してあげればいい

856 名前:セけでは。
そもそもtslintじゃなくてeslint使っているという状況もよくわからない
[]
[ここ壊れてます]

857 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 17:54:36.31 ID:yLrj+bDi.net]
あぁ、eslintって書いたのはtslintの間違い。

>単に変数oにinterface定義してあげればいいだけでは。

ネットワークやファイル経由のjsonとか、型情報が落とされたオブジェクトからの復元なんで。

858 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 23:34:39.69 ID:Yyv6Foyi.net]
>>819
いや静的型チェックと実行時型チェックをごっちゃにしちゃダメでしょ
TypeScriptは静的型チェックを提供するものなんだから実行時型チェックにinterfaceなんて持ち出す道理がない

859 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 11:02:47.05 ID:wX4L2Jep.net]
>>821
そうだったね。ごめん

860 名前:デフォルトの名無しさん mailto:sage [2017/08/22(火) 22:13:44.37 ID:/ptFhj0b.net]
TSの環境の開発の旗振りって誰?
いつになったら開発環境が安定するの?

webの情報のほとんどが古くて使えない



861 名前:デフォルトの名無しさん mailto:sage [2017/08/22(火) 22:37:14.07 ID:1PU0SC+v.net]
まずVSCodeをインストール
npmでts2.xをインストール
型定義は@types/xxxxxxx

862 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 13:19:39.56 ID:12Hdps1J.net]
msで作ってるから、まずはmsの開発環境試してみればいいんだろうけど、
大元の実装が不安定だったりするの?
https://github.com/Microsoft/TypeScript/wiki/Architectural-Overview

863 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 13:23:34.59 ID:YtvD4LeH.net]
TypeScriptの実装じゃなくて環境の方だろ?
型定義ファイルもTypingsとか@typesとかいろいろ変遷してきたし

864 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 19:59:00.18 ID:KTb6BBkr.net]
TypeScript1.0が出たころ何冊も本が書かれたけど、その後どんどん進化するから誰も手を出さなくなったな。

865 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 20:36:30.14 ID:CbozNT9/.net]
進化に関係なく使う人が居て需要があれば本は出される
出されないってことは・・そういうことだ

866 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 02:06:21.27 ID:+9ilYHDI.net]
ジェネリクスで教えてほしいことがあるんですが
型がundefinedかそうでないかで処理分岐をしたいんですがどうすればいいでしょうか

https://goo.gl/L6wazS

上記のようなコードはジェネリクスだとPはコンパイル時に解決されるものだからダメですよね。
じゃあどうすればいいんでしょうか。
もちろん引数にpayload:P みたいなのがあればtypeGaurdが使えるんですけど、それがない場合は?

867 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 07:45:31.16 ID:HjHZR7Zb.net]
試してないけど、Pのローカル変数を置いてみるのは?
初期化できないとダメかな。

868 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 09:42:23.66 ID:WV+v2bcZ.net]
コンパイル時に型自体の比較が出来ればいいんだけどねぇ

869 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 12:42:23.60 ID:ai11peC4.net]
型がundefinedって言うのは違うのでは?

変数がundefinedならわかるけど考え方の次元が違う気がする

Add<undefined>(item);ってありえないだろ

870 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:31:01.83 ID:uvmzLTaY.net]
undefinedの型はundefinedだよ



871 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 21:39:57.29 ID:+9ilYHDI.net]
>>832
undefined型、null型あります

872 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 04:59:29.39 ID:FZcG7krL.net]
undefined null void never 使い分け出来てる?

873 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 13:34:52.17 ID:0P4eY3kj.net]
>>830
だめでしたわ。やはり最終的に生成されるjsコードが型がないからなにもないところに型を定義するのは無理っぽい
ジェネリクスって使う側には幸せだけどライブラリを作ろうって思うとなかなか難しいす。

実は以下のコードが小さくて見やすいので改造できないか試しているんです。
https://github.com/aikoven/typescript-fsa/blob/master/src/index.ts

store.dispatch(someAction()) というように同期型のアクションを作るときはパラメータ引数無しで使えるんだけど
非同期アクションを使おうとした場合はパラメータ引数なしの表現ができないんですよ。

store.dispatch(someAsyncAction.started

874 名前:(undefined)) と書かなきゃけない。
ここのundefinedを省略する方法を探っていたんですよね。
[]
[ここ壊れてます]

875 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 13:49:39.35 ID:0iS30aa2.net]
そもそも何がしたいのかわからないんだけど
引数追加したいけないのか?

876 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 13:55:46.03 ID:0iS30aa2.net]
レス見てなかった
ごめんごめん

877 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 14:17:00.38 ID:iBnNI7N6.net]
引数にPが含まれていない以上呼び出し時の型パラメータはハードコーディングしなきゃならんわけで、
それならOnlyH用の関数と分けてしまっても大して変わらんだろう。処理自体は共通化すればいいし。

878 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 14:23:58.62 ID:0iS30aa2.net]
ところで本当にこれジェネリックの問題?

879 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 14:27:48.95 ID:wLayuApT.net]
C++でならテンプレートの特殊化で書けるし書きたい気持ちはよく分かる

880 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 17:42:23.47 ID:0P4eY3kj.net]
>>839
もちろんそれならできることは確認してますが、それだったら引数にundefined
許容したほうがいいかなーと。

ジェネリクスは知らないことが色々ありそうなんでもしかしたら解決方法があればと想ったんですが、、、、
typescriptの進化を待ちます、、、。

>>841
c++だとできるんですか。
どう書くのか知りたいです



881 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 21:19:13.07 ID:wLayuApT.net]
>>842
何というかC++のテンプレートは強力過ぎる
Boost::Spiritみたいにコンパイル時に構文解析器を生成するような変態的なことさえ可能
ただしコンパイル時間は死ぬ

ttps://ideone.com/6V11EP

C++っぽくないコードだけどとりあえず

882 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 21:38:06.45 ID:0P4eY3kj.net]
>>843
わ、わかんないです。c++昔使ったことがあるから分かるかと思ったら全然わからなかったという。
でも、ありがとうございました。

883 名前:デフォルトの名無しさん [2017/08/28(月) 18:40:12.12 ID:g1F8jR1j.net]
import 'reflect-metadata';

function logType(target: any, key: string) {
var t = Reflect.getMetadata('design:type', target, key);
console.log(`${key} type: ${t.name}`);
}

class Demo {
@logType
public attr1: string;
}

Visual Studio 2017 で上記のビルドは問題ないのですが
実行すると、「exports は定義されていません」と出てしまいます。

tsconfig.json で
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
は指定しています。

何か足りないのでしょうか?

884 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 20:16:46.01 ID:3Zs55+dM.net]
>>845
実行環境が書いてないから正確にはわからんのだけど
chromeとかブラウザ環境のjsはモジュール管理機構が無いからwebpackとか使わないと直接は実行できない。

885 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 15:24:22.43 ID:0nj0F5xg.net]
初心者なんだけど質問いいだろうか?

JS使う必要ある→ES5以前気持ち悪い→ES6未対応多い
という流れでTypeScript勉強しようかと思ったんだけど、手元にある本が分かりやすいけど1.0対応なんだ
追加機能を順に追えば問題ないだろうと思ったんだけど、更新箇所が多岐にわたるためか結構面倒で
ある程度網羅してそうなのも1.0からは追ってなかったりして、少し悩んでる

バージョンごとの差分を丁寧にまとめてくれているサイトか、
最新に近いバージョンを網羅的に解説してるサイトを

886 名前:、差分を意識しながら読もうかと思ってるんだけど、
慣れてる者の視点で、なんかいいサイト or 書籍があったら教えてくれないか?
[]
[ここ壊れてます]

887 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 15:36:04.15 ID:KRZoTQ7y.net]
公式のWhat's newがベスト
差分付き公式アナウンスの日本語訳もあったはず

888 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 17:14:44.50 ID:0nj0F5xg.net]
>>848
ありがとう
公式サイトのドキュメントは「英語でこれだけ読むのはだるい」と回避しちゃってたけど、
確かに差分把握程度なら英語苦手でもなんとかなりそうだし、どうしても分からなければそこだけ別途調べればいいかな……

889 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 17:16:57.33 ID:0nj0F5xg.net]
>>848
なんか完璧ボケたレスした、すまない
読んで公式確認して〜してる間に2行目が頭から抜け落ちてた

日本語訳あるなら探してみるわ

890 名前:デフォルトの名無しさん [2017/08/30(水) 17:22:11.52 ID:t7ExSs7Y.net]
>>847
その用途ならbabel使え
型が欲しい人が使うのがTS



891 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 19:16:11.64 ID:2eRd6qUC.net]
俺的には初心者こそTypeScriptってカンジがするけどね。
書いてる最中にエラーが出るから曖昧な知識を補填してくれる。
基本的にはES2015 + 型 だからESの仕様を勉強してればそれがTypeScriptとほぼ一致する。

892 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 23:22:37.02 ID:0nj0F5xg.net]
>>851
型がある方が楽なんで問題ありません。ありがとうございます。
普段よく使うのが C#, Ruby なんで CoffeeScript も見た目や好きなんですけど……。

893 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 10:22:17.60 ID:J0kol7QQ.net]
俺はもうTSだけのトランスパイルで落ち着いちゃったんだけどBabel通すメリットある?
Symbolない環境でもArrayLikeをfor-ofできるならBabel使うけどそうでもなさそうだし
わざわざビルドを複雑にする理由がない

894 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 18:05:56.86 ID:c0+jc73k.net]
>>853
見た目は大事だね

895 名前:デフォルトの名無しさん mailto:sage [2017/09/01(金) 13:39:42.18 ID:/s9HCfxW.net]
納期ギリギリでリリースしてきたな

896 名前:デフォルトの名無しさん mailto:sage [2017/09/01(金) 14:35:34.71 ID:gwzO0YnZ.net]
Announcing TypeScript 2.5
https://blogs.msdn.microsoft.com/typescript/2017/08/31/announcing-typescript-2-5/

897 名前:デフォルトの名無しさん mailto:sage [2017/09/01(金) 18:09:16.31 ID:NFcRuct1.net]
これリリースする意味あるんか?

898 名前:デフォルトの名無しさん mailto:sage [2017/09/01(金) 18:55:40.04 ID:/s9HCfxW.net]
やることなくなったんならcommunityに丸投げした大量のバグ修正しろやって感じ

899 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 17:49:25.16 ID:p+zwcdRJ.net]
プロジェクトの管理者が長期休暇で居なかったからな
今回はバグ修正とリファクタリングが多い
不在の間に溜まってたissueとPRも整理途中って感じだ

900 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 17:50:58.84 ID:pn8ujE89.net]
そう聞くとなんかほっこりした



901 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 14:18:22.90 ID:25YGmHNv.net]
Angelar4どう?

902 名前:デフォルトの名無しさん [2017/09/03(日) 16:16:24.17 ID:uF0EtmbD.net]
4はパフォーマンス改善が大きい
あとはifとか
もう9月だから5出るぞ

903 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 09:30:18.55 ID:XPn2hQsA.net]
Angular 2/4が狭量で遅すぎる理由
postd.cc/why-angular-2-4-is-too-little-too-late/

904 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 15:20:15.81 ID:YyUl+V5/.net]
>>864
原文のコメント欄でかなり叩かれてるね

905 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 21:01:59.56 ID:54ysCAWj.net]
自分でTL;DRって書いてあるからそっとしておけばいいのに

906 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 23:02:59.27 ID:WJEd6wUZ.net]
>>863
もうそんな時期か
ネットで探すと2ばっかりで4少ない

907 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 08:07:39.31 ID:JsNUX7wh.net]
>>866
tldrの意味を間違えて解釈してないか?

908 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 08:52:58.29 ID:ZKLFsM4G.net]
https://eow.alc.co.jp/search?q=tldr

TLDR
【略】
=Too long. Didn't read.
長過ぎ。読みませんでした。/長文うざい(と言う人のための要約)。
◆【場面】ネット上などで「文章が長過ぎる」と文句を言う。転じて「長文を嫌う人のための要約」という意味でも用いられる。

909 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 18:28:14.77 ID:8/JJ3nEQ.net]
○次受けが多いほど退場率が早くなる。高くなる

直受けの50万 客:いつまでもうちにいていいよ
3次受けの50万(客は90万払ってる) 客:短期延長していい?
5次受けの50万(客は150万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ 
長時間労働 高稼働 高スキル要求が多い

零細フリーランスサイトは5次受けから誰もできない難易度の高い仕事 余り物の仕事を紹介してくる。40万円代でやってくれと
これならJIETから3次でいったほうがいいな

446非決定性名無しさん2017/08/02(水) 22:12:48.95

JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした

JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の間でやらしている。

372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ

自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む

エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×3 = 言い値50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×1 悪質な言い値で50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - JIETに加入して公表価格で応募できる

910 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 11:15:37.37 ID:/BmvhpgH.net]
jsbinみたいなやつでautocompleteをサポートしたeditorあるやつないかな。
誰か作って



911 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 19:34:43.20 ID:n6fd8Yhd.net]
immutable.js v4まだちゃんと動かんのね。補完効くなら早く使いたい。

912 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 15:23:42.06 ID:ghZl2iPU.net]
TypeScript Deep Dive
https://basarat.gitbooks.io/typescript/
見つけた。読むと幸せになりそう

913 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 03:23:26.68 ID:+Ye2aVjL.net]
更新履歴確認できる?

914 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 18:20:58.44 ID:W51YTaAn.net]
https://blogs.msdn.microsoft.com/typescript/2017/10/02/typescript-turns-5/

Strict function types
https://github.com/Microsoft/TypeScript/pull/18654

五周年!

915 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 18:39:35.95 ID:9EEmWhET.net]
まだ五年しかたってないんだ。

916 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 07 ]
[ここ壊れてます]

917 名前::06:58.86 ID:9dKH0tXT.net mailto: flowは静的解析ツールでtypescriptが言語ってことでいいの? []
[ここ壊れてます]

918 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 21:16:28.99 ID:3eEbeVt6.net]
flowはゴミだから気にしなくていいよ

919 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 03:03:10.33 ID:kZcMF3GJ.net]
今はTSとほぼ同じ構文が使えるみたいだし推論が強い分言語としてはFlowのほうが格上になったと思うよ
開発ツール等を含めた評価はどうなるか知らんが

920 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 19:56:20.72 ID:n13p9MLl.net]
>>879
対応するライブラリが圧倒的に少ないからflowはゴミだよ
TSと完全互換とかならまだ可能性あったかもね



921 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 06:43:35.33 ID:D9zQ5ULh.net]
最初は俺もゴミかと思ったけど静的解析ツールとしてってことだと
jsのプロジェクトに段階的に型をつけていくならありかなって思ったんだよね。

922 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 08:50:48.19 ID:x7s9E0v1.net]
>>881
TSだって段階的に型を付けられるっしょ。

923 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 22:19:53.51 ID:A+SmlCyw.net]
https://github.com/Microsoft/TypeScript/wiki/What%27s-new-in-TypeScript#localized-diagnostics-on-the-command-line

typescript 2.6 ローカライズが全面的に入るっぽい

924 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 22:27:47.84 ID:+JNXgfir.net]
非英語Issueが次々と投げ込まれていくところを想像すると胸が熱くなるな
誰がこういうの決定してんだろ

925 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 13:45:26.13 ID:29cWpLj+.net]
いままで入ってなかったのが不思議

926 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 21:03:43.86 ID:U2nzSUai.net]
コマンドラインメッセージが日本語化されるの?いらんだろそれ

927 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 21:27:06.79 ID:nlQ3NzZf.net]
ローカライズありがたいけどところどころ明らかな誤訳が混じってる

928 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 08:15:42.86 ID:eZyML9Cw.net]
誤訳を見つけてくれてありがとう
お前のプルリクを待ってるぜ!

929 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 11:31:48.47 ID:ZoMoe7Af.net]
かえってわかりにくくなる

930 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 12:12:06.22 ID:Z0srHJQs.net]
コマンドラインよりhandbookの方を翻訳してほしいよね



931 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 08:07:20.81 ID:ALnPGbmE.net]
2.4.2から2.5.3に上げたら、User defined type-guard functionとTagged union typeの組み合わせで
型をうまく判断してくれなくなった。バグか仕様変更かどっちだろう?

932 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 08:10:24.70 ID:1Byit6P4.net]
issueあさりにいけ

933 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 22:10:52.67 ID:wBhwyrKl.net]
TypescriptでReact使ってる人にお聞きしたいんですけど
Componentを継承して新しいコンポーネントを作るわけですけど、
class CurrentComponet extends React.Component<Props> {
}
とつくってさらに
class NewComponet extends CurrentComponet {
}
とやってNewComponetをつくるとしますよね。
それはそれで使えるんですけどNewComponetのpropsはCurrentComponetのpropsしか使えないですよね。
PropsをNewComponet用に拡張する方法ってないですかね?
素直に一からComponent作るしかないでしょうか

934 名前:デフォルトの名無しさん [2017/10/18(水) 23:58:41.35 ID:5bsiTMSo.net]
>>893
class CurrentComponet<T extends Props> extends React.Component<T> {
}

935 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 09:09:43.33 ID:33xh/nBB.net]
>>894
うほー。神よ!
でもぶっちゃけ何が起こってるのかよくわかってないです。

> class CurrentComponet<T extends Props> extends React.Component<T> {
上記Tは一体いつ解決されてるんですかね。
そもそもTypeScriptでReactのコンポーネントの書き方ってこっちが正解だったりするんで?

936 名前:デフォルトの名無しさん [2017/10/19(木) 20:20:28.20 ID:LXr9z35K.net]
それか
class CurrentComponet<T> extends React.Component<T&Props> {
}
でもいいな
こっちが使う側からすると楽かも

>>895
説明面倒だからggrks

937 名前:デフォルトの名無しさん mailto:sage [2017/10/20(金) 00:43:33.60 ID:aPV4O3Wb.net]
moment.js 便利だな
今更だが

938 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 12:56:00.66 ID:VqKLKVGY.net]
>>896
単純にReact.d.tsと見比べてみると良い。結局使う時に<Props>を使えるようにCurrentComponet<T> としておくのが目的
ジェネリクス型に追加情報を与えるための概念と考えると分かりやすい。
<T>をTopに残しておいてそこを解決すると React.Component<T>も自動的に追従する

939 名前:デフォルトの名無しさん mailto:sage [2017/10/22(日) 05:02:18.10 ID:NdVgkCyx.net]
>>897
イミュータブル好きならこっちやぞ。
https://github.com/date-fns/date-fns

940 名前:デフォルトの名無しさん mailto:sage [2017/10/22(日) 05:09:40.65 ID:NdVgkCyx.net]
>>871
いろいろあるけどちゃんと探した?
今さら誰かに再発明してもらって↓とかに勝てるの?
https://codesandbox.io



941 名前:名無しさん@そうだ選挙に行こう! Go to vote! mailto:sage [2017/10/22(日) 11:51:56.71 ID:r0jppfs8.net]
>>900
おっ。そこは知ってたけどTypeScriptのコード補完効くとしらなかったわ。ありがと

942 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 21:24:20.12 ID:xr09IWoG.net]
地味にawait書き忘れてちゃんと動かないというパターンが多発してるんですが
TSLintでawait入れ漏れで指摘する機能ってないですかね?

943 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 23:05:48.01 ID:zzY32qse.net]
>>902
c#だと書き忘れた場合はコンパイラが警告出してくれるんだけどね

944 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 07:24:42.96 ID:I1PPVtSx.net]
もう10月終わるけどまた駆け込みリリースかね

945 名前:デフォルトの名無しさん [2017/11/01(水) 02:44:19.40 ID:x/3omok5.net]
Announcing TypeScript 2.6
https://blogs.msdn.microsoft.com/typescript/2017/10/31/announcing-typescript-2-6/

946 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 23:51:55.80 ID:x/3omok5.net]
>>905
TypeScript 2.6.1 変更点
https://qiita.com/vvakame/items/d2c7cf142fa0af39d2d5

947 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 12:10:31.71 ID:Gd7lD1Ih.net]
Angular 5.0.0がリリースされました
https://medium.com/angular-japan-user-group/version-5-0-0-of-angular-now-available-9746ef966c7d

はやい、はやいよぉ…

948 名前:デフォルトの名無しさん [2017/11/02(木) 20:11:59.50 ID:eNK4k+UN.net]
ffのアップデート並み

949 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 22:27:03.79 ID:taAN7xor.net]
なお間に合わなかったバグフィクスはガンガン後回しにしてリリースする模様

950 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 03:45:19.14 ID:kJ3ZRkrN.net]
アジャイルってそういうもんだし



951 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 05:18:11.47 ID:IsjJm0uL.net]
>>907
アンギュラーってぶっちゃけ使ってる人いるの?

952 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 07:42:27.47 ID:gwa0lp/v.net]
Google自身が使ってないのにどうして使うというのか

953 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 20:05:35.96 ID:uhXC9xV7.net]
https://html5experts.jp/shumpei-shiraishi/24660/amp/

954 名前:デフォルトの名無しさん mailto:sage [2017/11/12(日) 02:41:12.23 ID:EwcJ+uHe.net]
2.6になったらコンパイルエラーが多発する。react-redux のconnect周りで。
なんでー

955 名前:デフォルトの名無しさん [2017/11/12(日) 13:16:12.66 ID:oQrEnmVF.net]
MEAN勉強中なのにangulerってマイナーなの?ショック

956 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 21:21:37.41 ID:UiY7gN7d.net]
コンストラクタを複数定義できないのでしょうか??

うーん。

957 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 21:28:52.67 ID:UiY7gN7d.net]
オーバーロードはできるけど、実装は1つとか・・
JSONへのシリアライズ・デシリアライズは自分で制御するので、
constructor(json: any)と
construcotr(parameter1: type1, parameter2: type2)
二つ用意したいんですけど。最初は
construcotr(parameter1: type1, parameter2: type2)だけ用意しえ、
staticメソッドの方に
statis parseJson(json: any): Class1として、そこでconstrucotr(parameter1: type1, parameter2: type2)を呼んでたんですけど、
これだと子に親のインスタンスの参照渡せないんですよね。

958 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 21:37:57.59 ID:UiY7gN7d.net]
ごめんなさい。これじゃ何いってるからんし、意味不明ですね。

959 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 00:19:08.88 ID:mkIW06Zo.net]
>>916
大分お疲れなようで…… Discriminated Unionsを使うとか?
https://jsbin.com/bequjusaya/1/edit?js,console

960 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 04:33:36.78 ID:Aye3R7gH.net]
オブジェクト指向を学ぼう



961 名前:デフォルトの名無しさん [2017/11/26(日) 23:18:17.65 ID:rkyPHH9I.net]
願望なんだけど
Typescriptは言語自体がWebアプリ開発用に
丸ごとフレームワークになったら良いと思う。

Flash(flex)のActionscript3も
フレームワーク化達成した様だし。
flex.apache.org/

962 名前:デフォルトの名無しさん [2017/11/26(日) 23:25:22.11 ID:pQh5Iwo2.net]
>>921
JSのスーパーセット目指してるんだし無理に決まってんだろ

963 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 23:28:03.09 ID:rkyPHH9I.net]
すみませんリンク先間違ってました。
royale.codeoscopic.com/

964 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 23:33:18.08 ID:i1z8rFU6.net]
>>921
TypeScriptでkoa.js使えばいいんでわ?
なんか違うの?

965 名前:920 mailto:sage [2017/11/26(日) 23:51:34.59 ID:rkyPHH9I.net]
>>924
すみませんkoa.jsの存在を知りませんでした。
良さげなので検討してみます。

966 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 19:48:21.81 ID:Qr863YVP.net]
人気沸騰中のはずなのに年々参加者が減っていきついにアドカレ作られすらしなくなったTypeScriptさん

967 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 20:26:25.44 ID:6V2me3Iy.net]
TypeScript関係ないけど、アドカレVue.jsすげぇな。React人気ないのか??

968 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 20:32:35.43 ID:u+SbUYxr.net]
FBのゴタゴタがきいてるんかな

969 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 22:04:45.62 ID:jFvanr8n.net]
アドカレ的にはjs扱いなんじゃね?

970 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 23:41:41.28 ID:tkoMYkG1.net]
ES6普及したから
AltJSへの興味が薄れてるんじゃね?



971 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 23:55:12.47 ID:jFvanr8n.net]
まだasync await周りが完成してないけどね。
とりあえずmapとかfilterが普通に使えるようになってほしい

972 名前:デフォルトの名無しさん mailto:sage [2017/12/14(木) 10:19:06.97 ID:y5gxd1px.net]
stackblitzいいな。マジでplayground系の決定版感ある。
https://stackblitz.com/edit/react-ts

973 名前:デフォルトの名無しさん mailto:sage [2017/12/14(木) 16:42:58.78 ID:y5gxd1px.net]
typeScriptのinterfaceで配列の要素数を制約する方法ってありますかね?

974 名前:デフォルトの名無しさん [2017/12/14(木) 19:30:41.65 ID:lO2D+k3i.net]
>>932
vscodeみてーなUIだな

975 名前:デフォルトの名無しさん [2017/12/14(木) 19:31:21.04 ID:lO2D+k3i.net]
>>933
何に使うの?
空でない配列なら分かるけど

976 名前:デフォルトの名無しさん mailto:sage [2017/12/14(木) 19:43:58.65 ID:ZmHWuRBr.net]
tupleとして扱う

977 名前:デフォルトの名無しさん mailto:sage [2017/12/14(木) 20:36:42.23 ID:LW4O1R2X.net]
tuple使え

978 名前:デフォルトの名無しさん [2017/12/14(木) 22:26:15.12 ID:lO2D+k3i.net]
もしかして:タプル

979 名前:機能を知らない
let vec:[number,number=[1,1];
[]
[ここ壊れてます]

980 名前:デフォルトの名無しさん [2017/12/14(木) 22:27:31.03 ID:lO2D+k3i.net]
ミス
let vec:[number,number]=[1,1];

もちろんこれでもOK
type Vec=[number,number];
let vec:Vec=[number,number];



981 名前:デフォルトの名無しさん mailto:sage [2017/12/14(木) 22:29:51.71 ID:LW4O1R2X.net]
前にもタプルあるのにタプル欲しい言ってたやついたような

982 名前:デフォルトの名無しさん [2017/12/14(木) 23:16:24.01 ID:lO2D+k3i.net]
https://www.typescriptlang.org/docs/handbook/advanced-types.html

タプルもだけど、このページ読んでない人多くね?
TypeScript語るなら&、|、is、keyofくらいマスターしておけよな

983 名前:デフォルトの名無しさん mailto:sage [2017/12/15(金) 00:23:56.02 ID:okgNcKTb.net]
>>938
すっかり忘れとりました。Enumとかも使ってなかった。
>>941
ですよね。

>>934
online vscode と名乗ってる

984 名前:デフォルトの名無しさん mailto:sage [2017/12/15(金) 10:29:49.56 ID:sajYuSyc.net]
(´・ω・`) デコレータがなんの役に立つのかわからん…

985 名前:デフォルトの名無しさん mailto:sage [2017/12/15(金) 12:12:33.81 ID:ehq3lI3U.net]
一時期使ってみたが全部取っ払って今は一切使ってない
デコレータを使う設計自体が悪い
技術的負債になるワークアラウンドが不運にも市民権を得てしまったのがデコレータ
デコレータを使うのは未熟者の証

986 名前:デフォルトの名無しさん mailto:sage [2017/12/15(金) 12:39:37.56 ID:pWQR70OL.net]
veu

987 名前:デフォルトの名無しさん mailto:sage [2017/12/15(金) 13:09:01.78 ID:VJqK9zii.net]
使ってないけど、デコレータはDI(dependency injection)(依存性の注入)に使うんでしょ?
そもそもそれが必要な事なのか知らんけど

988 名前:デフォルトの名無しさん mailto:sage [2017/12/15(金) 16:08:57.23 ID:ehq3lI3U.net]
DIはコンストラクタ注入だけでいい
メソッドだの継承だのデコレータだの無駄に複雑なだけ

989 名前:デフォルトの名無しさん mailto:sage [2017/12/16(土) 11:15:39.58 ID:Ab77UDQn.net]
Angularもけっこう深い沼だな…

990 名前:デフォルトの名無しさん mailto:sage [2017/12/16(土) 22:02:32.48 ID:c6/WUVVQ.net]
沼というか泥舟



991 名前:デフォルトの名無しさん mailto:sage [2017/12/17(日) 16:05:22.54 ID:dnHAQQNy.net]
ionic はタイタニックだしな

992 名前:デフォルトの名無しさん [2017/12/18(月) 13:13:38.64 ID:2IRqztoA.net]
あげ

993 名前:デフォルトの名無しさん mailto:sage [2018/01/16(火) 20:27:44.97 ID:FhxZLFGY.net]
interfaceを使ってるとjsonでセーブする時にすごく便利なんだけどメソッドが生やせないのが辛い。
なんとかならないかな

994 名前:デフォルトの名無しさん mailto:sage [2018/01/17(水) 16:20:55.33 ID:AWcujNq7.net]
手動で保存・復元すればOK

995 名前:デフォルトの名無しさん mailto:sage [2018/01/17(水) 16:23:04.93 ID:AWcujNq7.net]
まぁ、classレベルならいいけど、interfaceレベルだときついかもしれんが。

996 名前:デフォルトの名無しさん mailto:sage [2018/01/18(木) 18:36:14.16 ID:c8bYFLwE.net]
Announcing TypeScript 2.7 RC
https://blogs.msdn.microsoft.com/typescript/2018/01/17/announcing-typescript-2-7-rc/

毎回RC版出してるけど、VSCodeやTSって更新早いからいらないと思う

997 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 05:53:19.16 ID:V1qhcEkf.net]
localStorageとかreduxとか使ってると意図せず型変換が入ってtscはDate型の想定なのに実際はstringという状況マジ勘弁してください。

998 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 08:16:36.90 ID:BFkGLEDk.net]
>tscはDate型の想定なのに実際はstringという状況

そりゃ不適切な型付けしてしまっただけじゃね?
stringを入る可能性があるanyをDateと決め打ちしたとか。

999 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 22:12:47.33 ID:cFDHLCLJ.net]
DateがJSON serializableじゃないって話でTypeScriptの問題でもない

1000 名前:デフォルトの名無しさん mailto:sage [2018/01/29(月) 11:43:46.31 ID:16WZc9vb.net]
インスタンスではなくclass を引数に取った関数を作りたいんですが、良い方法がないでしょうか?
redux.connectをラップする関数を作りたくて上記手段を求めています
サンプルコードはいかにおいています
https://goo.gl/FF5jFc



1001 名前:デフォルトの名無しさん mailto:sage [2018/01/29(月) 11:48:46.22 ID:16WZc9vb.net]
>>959
すんません。自己解決
interface IBase {
new (message: string): Base;
}

1002 名前:デフォルトの名無しさん mailto:sage [2018/01/29(月) 14:06:48.67 ID:16WZc9vb.net]
返り値とか省略すると推論してくれますけど推論の結果を取得する方法ってないですかね?
vscodeでカーソルを合わせてると出るんですけどカーソル合わせている間しか出ないのでコピペしづらくて。

1003 名前:デフォルトの名無しさん mailto:sage [2018/01/29(月) 16:26:17.34 ID:g7co9PB2.net]
>>960
Baseって何を指すの?

1004 名前:デフォルトの名無しさん mailto:sage [2018/01/31(水) 10:23:18.30 ID:V9tZNzCA.net]
TypeScriptでglobal import的なものってないですかね?
ロガーを作ったんですけど、それを毎回importするのがしんどくて

1005 名前:デフォルトの名無しさん mailto:sage [2018/02/01(木) 14:40:42.51 ID:ma2l7eSX.net]
Announcing TypeScript 2.7
https://blogs.msdn.microsoft.com/typescript/2018/01/31/announcing-typescript-2-7/

1006 名前:デフォルトの名無しさん mailto:sage [2018/02/05(月) 22:05:36.77 ID:wQgqkVj5.net]
>>964
TypeScript 2.7.1 変更点
https://qiita.com/vvakame/items/3a1e628e53a5dd99dfe0

2.8
Conditional types
https://github.com/Microsoft/TypeScript/pull/21316
Type inference in conditional types
https://github.com/Microsoft/TypeScript/pull/21496

1007 名前:デフォルトの名無しさん mailto:sage [2018/02/05(月) 23:37:11.09 ID:Rv6TwvHy.net]
Conditional types関連は既にmergedなのか

1008 名前:デフォルトの名無しさん mailto:sage [2018/02/06(火) 05:58:37.68 ID:vXstL54C.net]
小躍りしながら使ってみたところ速攻でバグにぶち当たって無事死亡
修正されるまで一回休み

1009 名前:デフォルトの名無しさん mailto:sage [2018/02/13(火) 05:54:42.41 ID:kAM/OKSF.net]
型を後付した言語の限界があるよな。
ストレージに一度保存して意図せずjsonになってたり、関数のインターフェース上nullやundefind許容しない設定にしてても結局js側でnullの可能性のある値を渡されたらバグるし。

例えばjsとtsの境界部分。
モジュールとして外出ししている関数とかのインターフェースとかをきちんとnullチェックしてくれるコードを自動で埋め込んでくんないかな。

1010 名前:デフォルトの名無しさん mailto:sage [2018/02/13(火) 06:47:09.07 ID:a2BGtfue.net]
それは信頼できないjsが悪いだけだろ
外部のクソコードはどうにもならん



1011 名前:デフォルトの名無しさん mailto:sage [2018/02/13(火) 09:13:05.77 ID:cOH/iFjL.net]
TypeScriptが目指してるのはコンパイル時型チェックであって実行時型チェックではない
コンパイル時型チェックならパフォーマンスに影響はない(処理系によってはむしろ向上する)が実行時型チェックは明確にパフォーマンスが落ちる

PHPなんかは実行時型チェックを実装しちゃったもんだからクラスのメンバに型宣言するRFCすらリジェクトされてる

1012 名前:デフォルトの名無しさん mailto:sage [2018/02/13(火) 15:21:25.94 ID:xpZzv5qK.net]
>>970
ですよね。それはわかっているんですが、、、、
せめてlint的な感じでjs向けのインターフェースが null| undefinedの可能性があるから直せみたいな警告が出るといいんですけど。
async func 内の await記入漏れと一緒にほしい。

1013 名前:デフォルトの名無しさん mailto:sage [2018/02/13(火) 15:22:21.77 ID:xpZzv5qK.net]
blog.yux3.net/entry/2017/06/08/202859
あと objectとObjectがあるって知らなかった。
hyperappの型定義で始めて見た。

1014 名前:デフォルトの名無しさん mailto:sage [2018/02/13(火) 22:00:08.76 ID:XkJQyT0D.net]
jsから呼ばれる部分はどうやってもチェックしようがないと思うぞ。

1015 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 18:34:14.34 ID:KguAhC0Q.net]
yarnのワークスペースを使用して、Create React AppとCreate React Native App (Expo) で共通のコードを共有する
https://taiyaq.com/contents/gk1Kr17x8vW9LIozNo51lez9rr
を参考にしてcreate-react-app でtypescriptプロジェクトを作ったんだけど
ワークスペース内での型情報の共有がうまくいかない。
それぞれ単体では動くんだけど。既に試している人っている?

1016 名前:デフォルトの名無しさん [2018/02/26(月) 16:47:13.03 ID:Y4Glcgpd.net]
ブラウザで動く個人的なちょっとしたものしか作らなくて、
ライブラリはimportしないで自分でscriptタグで読み込んでるから、
@typesの定義だけ欲しいんだけど、今って中身のないstubばかりで
importしないと使えないんだけど、これってどうすればいいのでしょうか?

仕方なくファイルをルートにコピーして、意味がわからないまま
export as namespace hogehoge; みたいな文をくっつけたりして
何とか機能するようにしてるけど、非常に困ってます

1017 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 17:28:19.81 ID:wXoocKSL.net]
.d.tsファイルでインポートすればいいはず

1018 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 19:51:46.67 ID:Y4Glcgpd.net]
いろいろやってみたけど、なかなか上手くいかない。
tsc --listFilesってやると、定義自体は読み込めてるようなんだけど、
要するに、d.tsファイルがIsomorphic modules (UMD global)

1019 名前:ってやつに対応した書き方になってなくて、
それに対応するためにexport as namespace hogehoge; が必要だったりするらしい
https://www.typescriptlang.org/docs/handbook/modules.html#umd-modules
[]
[ここ壊れてます]

1020 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 21:54:01.34 ID:0Cvn/PR2.net]
>>975
ちょっと言ってることがわからないからこういうときは小さいサンプルでも作ってどっかにあげてみてくんない?
そしてそうやって小さくまとめてみると意外と自己解決したりするもんだ。



1021 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 23:16:55.53 ID:Y4Glcgpd.net]
例えばmomentを使う場合、scriptタグでmoment.jsを読み込んでいれば、
自分のjsではconsole.log(moment().format("YYYYMMDD hh:mm:ss"))みたいに使えます。
そのjsをtypescriptで書こうとした場合、moment()の定義が必要になります。
そこで@types/momentをインストールするわけですが、@typesはオワコンらしく、
実際にはmoment自体のパッケージもインストールされて、その中の定義ファイルが
参照されるようになります。
しかし、自分が使おうとしているmoment()は、トップレベルのwindow.moment()なわけですが、
定義ファイルでは、そのことが考慮されていないために定義を見つけられないようです。
(エラーは出ますが、anyとしてコンパイルはされます。)
その定義を見つけらるようにするおまじないが、export as namespace moment;のようです。

結局は、モジュールシステムに合わせた定義ファイルの書き方を
理解している人が少ないのだと思います。
export hogehoge とか export default hogehoge とか export = hogehogeとか
わけわかりません。

1022 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 01:53:35.35 ID:ZLoGDkNB.net]
>>979
@typesは別にオワコンじゃない。
型定義を提供するのに2つのルートがあるってだけ。
momentは作者側で型定義を提供してくれてるってだけ。

ところで解決したってことでいいんだよね?
/// <reference path="./mytypes/moment.d.ts"/>
みたいな感じでカスタムしたd.tsを読めばいいだけだし。

1023 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 01:59:51.55 ID:ZLoGDkNB.net]
つーかUMD対応中みたいだね
https://github.com/moment/moment/pull/3688

ワークアラウンドとして

import * as _moment from 'moment';
export as namespace moment;
export = _moment;

というd.tsを作ってimportすればいい

1024 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 12:44:23.84 ID:XDcEi9Sw.net]
import使っちゃった意味ないんだけどね
vueみたいに複数のファイルに分けられちゃうと大幅に変えないといけないから
気軽にプルリクできない感じがする
だが自分でその場しのぎの対応してると、バージョン上げられた時に詰む

1025 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 12:53:20.87 ID:XDcEi9Sw.net]
勘違いしてた
import _moment from 'moment';
export as namespace moment;
export = _moment;
とか、
import _Vue from 'Vue';
export as namespace Vue;
export = _Vue;
みたいに書けばいいのか。
すごい。解決した

1026 名前:デフォルトの名無しさん mailto:sage [2018/03/01(木) 22:44:29.35 ID:V7eofqS1.net]
次スレカモン

1027 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 23:33:32.22 ID:ZJVFDbUv.net]
TSConf 2018
https://tsconf.io/

初のカンファか

1028 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 08:23:22.72 ID:K5Isy9NI.net]
Announcing TypeScript 2.8 RC
https://blogs.msdn.microsoft.com/typescript/2018/03/15/announcing-typescript-2-8-rc/

1029 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 14:11:16.40 ID:HcB/quXY.net]
>>984
次スレのテンプレに入れたほうがいいものとかある?

1030 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 00:42:53.78 ID:4Xu/HAYS.net]
tsconfigのexcludeの項目を、compilerOptionsの中に書いてて、何でダメなんだろう悩んじゃった
設定はcompilerOptionsの中に書くものと思い込んでて、全然気付けなかった



1031 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 21:01:59.42 ID:zUTKt+H5.net]
>>987
リポジトリとかWikiとかWhat'sNewあたり?
あとは流れで

1032 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 08:14:57.22 ID:3iq+90ex.net]
Announcing TypeScript 2.8
https://blogs.msdn.microsoft.com/typescript/2018/03/27/announcing-typescript-2-8/

1033 名前:デフォルトの名無しさん [2018/04/02(月) 17:52:32.10 ID:G4IZotVZ.net]
俺のtypescriptが好きすぎる感情をどこにぶつけていいかわからない

1034 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 18:53:21 ]
[ここ壊れてます]

1035 名前:.97 ID:aSG3UjFJ.net mailto: Qiitaでええやろ []
[ここ壊れてます]

1036 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 10:37:57.34 ID:0rmSrban.net]
>>991
俺も俺も!。qiitaでもいいしココでもいいよ!!

1037 名前:デフォルトの名無しさん [2018/04/03(火) 11:33:16.29 ID:R6gDm2yr.net]
次スレよろ

1038 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 19:58:55.32 ID:0c0qrJs0.net]
スレ立てにぶつけることが決まったな

1039 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 07:03:30.59 ID:yIya3QmH.net]
どうしたん?人気あるわりにここ静かやん

1040 名前:デフォルトの名無しさん [2018/04/20(金) 09:50:01.67 ID:WJk0jxxj.net]
続きはCMのあとで!



1041 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 20:06:57.83 ID:TUZ43qB9.net]
はよ次スレ

1042 名前:デフォルトの名無しさん [2018/04/24(火) 21:50:54.24 ID:BAt1Eldp.net]
うむ

1043 名前:デフォルトの名無しさん mailto:sage [2018/04/26(木) 21:48:57.62 ID:mMDBzDaB.net]

https://mevius.5ch.net/test/read.cgi/tech/1524746903/

1044 名前:デフォルトの名無しさん [2018/04/26(木) 21:52:07.15 ID:vM7mL5EC.net]
safariが次のIEと呼ばれているように、
Typescriptは次のcoffeescriptと言われているwww

1045 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1092日 3時間 14分 38秒

1046 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<265KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef