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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2015/04/30(木) 18:37:29.98ID:ynMflk1l
http://www.typescriptlang.org/

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

前スレ
http://peace.2ch.net/test/read.cgi/tech/1349187527/
2016/01/25(月) 14:01:32.82ID:ipEE3CyC
>>191
そんなおかしいなら --moduleResolution の意味を言ってみてよ
2016/01/25(月) 14:05:44.07ID:ipEE3CyC
>>191
あと、 --moduleResolution node で認識される*.d.tsの書き方も言ってみてよ
これドキュメントに書いてないんだよな
2016/01/25(月) 14:22:21.52ID:ipEE3CyC
http://qiita.com/vvakame/items/72d22e33632178f7db24
この人の↑これを見るのが一番まとまってて分かり易い
> ・declare module "hoge" 形式の定義は利用できない
って書いてあるけど実際はもう少し修正しないと駄目だった
とりあえず適当に修正すれば通るように出来るけど何が問題なのか
ドキュメントが見つからず確証が持ててない
2016/01/25(月) 17:21:06.80ID:FKcC8XYP
みんなはcommonjs使うからハマらないっての
クイズじゃなくて何がしたくてできないのかのほうを書けよ
2016/01/25(月) 19:30:10.53ID:ipEE3CyC
>>195
>>194の話はcommonjsとか関係無いよ、モジュール全般の話でしょ
それにブラウザからcommonjsロードできないのにみんな使うってのはおかしいでしょ
2016/01/25(月) 21:26:21.10ID:FKcC8XYP
貴殿の力量、拝察して候
2016/01/26(火) 10:19:05.81ID:kKfPXzbs
JavaScriptから来た人には歴史的経緯と後付モジュール機構は常識の部類なんだろうけど、他言語からくるとjs/tsのモジュール関係は病んでるよな
2016/01/26(火) 14:10:10.49ID:pw0cS8Zr
>>197
最後にはそれかよw
ちゃんと具体的に書いてくれないと完全に負け惜しみにしか聞こえないよ
2016/01/26(火) 14:24:44.17ID:pw0cS8Zr
>>198
TypeScriptには内部モジュール(内部は造語)があって外部モジュールについては
あまり重要視されてなかった経緯があるからね
module→namespaceって名前を変えたけどmoduleキーワードは今も使える
もはや混乱の元でしかないし<<<reference file="hoge"/>ももはや役割を終えてるからなくした方がいいな
で、importの意味が1.6でしれっとそれより前の解釈と思いっきり変わってしまったのが混乱の元だ
とりあえずVSCodeのソースを見れば最近の*.tsの書き方が分かる
俺はそれ見て同じ書き方をしようとしてmodule,referenceから移行しようとして
importがトンでもない事になってる事にやっと気付いた
2016/01/26(火) 14:38:18.32ID:HDdwtYdo
requireからES6 modulesまでの変遷は確かに知らずに見ると混乱する
NodeのStreamAPIと違ってES6 modulesで古い情報にフィルタかけられるのが救い
2016/01/26(火) 15:03:49.80ID:pw0cS8Zr
>>197みたいにNode.jsオンリーで歴史的経緯も知らずにnpm installだけして
使ってる人にはimportでハマルとか言ってる奴はプッっとしか思わないんだろうね
ま、そういう奴が居るって事は1.6の変更は意味があったといえる

俺は1.0ぐらいからブラウザ用にmodule,referenceでゴリゴリ書いてたから
移行するのがスゲー大変だった
しかし、お陰で汎用的な機能はNode.jsとブラウザの両方で使えるように
書けるようになったから移行する意味はあった(それにES6のmoduleにも対応してるはず)
2016/01/27(水) 12:12:11.54ID:ChRzt0VQ
webpackとか使うとjsの場合以下のようにtemplateとしてhtmlコードを取り込むことができますが、

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

typeScript単体で使う場合で似たようなことをする方法ってありますか?
2016/01/27(水) 14:52:35.66ID:H1ToiAO7
>>203
1.6からjsxに対応したからとりあえず typescript jsx で検索してみなよ
それが目的のものかは分からんけど
2016/01/29(金) 14:25:20.13ID:EB80mx/+
https://twitter.com/bterlson/status/692489384654999552

ES2016 will likely not contain async functions.
2016/01/29(金) 17:10:41.49ID:LlSYvxYC
安心してください、TypeScriptはasyncが使えます
2016/02/05(金) 16:04:12.96ID:7HipHDXr
TypeScript 1.8ベータにはJavaScript統合、シームレス関数コンポーネントなどが追加される
http://www.infoq.com/jp/news/2016/02/announcing-typescript-18
2016/02/06(土) 01:27:25.39ID:Krz+De6m
>>207
Announcing TypeScript 1.8 Beta
https://blogs.msdn.microsoft.com/typescript/2016/01/28/announcing-typescript-1-8-beta/

TypeScript 1.8.0-beta 変更点
http://qiita.com/vvakame/items/31f5c45ff49de67d5634
2016/02/12(金) 11:57:21.91ID:tB/7lfI+
typeScriptでつくられたOSSなプロダクトって何があるのかな。
typeScriptの勉強に使えそうな手軽なサイズのものがいいんですが
特にVSC以外で
2016/02/12(金) 12:46:41.49ID:whWT7zC/
vs版1.7.6を入れたのにバージョン情報では
1.7.5と表示されるんだけどミスってる?
npm installでも1.7.5だった
2016/02/12(金) 21:36:59.74ID:tB/7lfI+
typeScriptでWebWorkerのコードを書こうとするとpostMessage関数で怒られるんです。

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

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

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

参考
https://developer.mozilla.org/ja/docs/Web/Guide/Performance/Using_web_workers
2016/02/12(金) 22:34:57.47ID:0bFQuZrs
ES以外の定義が違うなら自分でプルリク出さないと直らないぞ
DOM周りは基本放置だからな
2016/02/12(金) 23:19:19.89ID:DcD4rrQS
1.7.5に入ってるlib.webworker.d.tsには
WorkerインターフェースにpostMessage(message: any, ports?: any): void
グローバルにpostMessage(data: any): void
ってなってるけど
2016/02/13(土) 12:50:38.42ID:SL3t4ard
>>213
先頭行に
/// <reference path="lib.webworker.d.ts" />
と入れてもエラーが出るんですが、どうすればいいんでしょう

error TS6053: File 'lib.webworker.d.ts' not found.
2016/02/13(土) 16:34:47.12ID:DMjW/lz+
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用だな
2016/02/13(土) 16:42:47.45ID:DMjW/lz+
いや間違えた…
window.postMessage以外は第2引数が省略可能だな
ただwindow.postMessageも第2引数を省略すると"*"が指定された時と同じ動作をするように
ブラウザが勝手に対応してるっぽいな
格オブジェクト毎に微妙に役割りが違うものを全部一緒くたにpostMessageにしてるから
結構ややこしい事になってるな…
とりあえず>>214はwindow.postMessageを使ってるのであれば
第2引数に"*"を指定すればいいはずだよ
2016/02/13(土) 16:44:08.08ID:DMjW/lz+
格オブジェクト→各オブジェクト 念の為…連投スマン
2016/02/13(土) 17:00:54.46ID:DMjW/lz+
何度もごめん
やっと本質が理解できた
根本的な解決には2.0にならないとダメらしいな
それまではpostMessageには"*"とかundefinedを指定して誤魔化すのが一番手っ取り早い
2016/02/14(日) 10:23:55.62ID:+Fbk6tbu
いえ。聞きたいことは
golobalscopeの参照先を lib.webworker.d.ts
にしたいわけです。

```
new Wroker(“./worker.js”); // <―ここのworker.js内のグローバルスコープをなんとかしたい
```
上記のように別スレッドでwroker.jsを動かすわけですけど、
worker.js内のグローバルスコープはdocumetにアクセスできなかったり独自のものみたいです。
それで参照先を lib.webworker.d.tsにしたくて/// <reference path="lib.webworker.d.ts" />としても
ファイルがないと怒られます。
typescript自身が持っているd.tsファイルに対してのリファレンスの貼り方を教えていただきたいのです。
2016/02/14(日) 10:35:21.09ID:wvAk6z1k
>>219
https://github.com/Microsoft/TypeScript/wiki/Roadmap
の2.0にあるImprove lib.d.ts modularityがそれを簡単にやる為のものらしい
要するに今のところそういう事が簡単に出来無いってこと
http://blog.scottlogic.com/2015/08/10/ts-vs-proj.html
この辺に一応回避方法が書いてあるよ
2016/02/14(日) 13:52:50.82ID:+Fbk6tbu
>>220
情報ありがとうございます。
とりあえず

```
(<any>postMessage)(workerResult);
```
と書いてエラー抑制で回避することにします。
2016/02/14(日) 17:38:32.66ID:lb9byLOu
いい方法が見つかるまではtsconfig.jsonの"files"にlib.*.d.tsのパスを入れておけばいいよ
tsconfig.jsonの書き方と使い方は公式Wiki参照
2016/02/19(金) 17:13:14.79ID:YBiR9mLr
NonNullableきたこれでかつる
224デフォルトの名無しさん
垢版 |
2016/02/23(火) 10:35:12.67ID:6s2CAaJ0
Announcing TypeScript 1.8
https://blogs.msdn.microsoft.com/typescript/2016/02/22/announcing-typescript-1-8-2/
2016/02/23(火) 11:46:00.00ID:UPC5owG9
>>224 おつ
TypeScript for Visual Studio 2015 は Details > Releases から 1.8.4 を選ばないと
以前のものがダウンロードされるので注意。

あと Visual Studio Code のインテリセンス等の挙動は
tscへのパスの差し替えだけでは完璧ではないぽい。なにか方法があるかもしれないが
2016/02/23(火) 12:25:15.11ID:MgSDdSDU
VSCodeは自前でtsserver.jsを持ってるからそれを差し替えないと駄目でしょ
下手に差し替えないでバージョンアップを待てばいいんじゃね?
すぐするでしょ
2016/02/23(火) 12:28:20.34ID:MgSDdSDU
ちなみにメインで使ってるわけじゃないけど、なんかVSCodeって使いづらいような気がしてきた
バージョンアップで改善されてくとは思うけど、メインで使ってる人は使い心地がどうなのか知りたい
2016/02/24(水) 19:37:32.88ID:cGyLx1gy
for (let i = ...) は許されるのに
if (let o = ...) や while (let ...) が許されないのは仕様でしょうか?
nullスキップをしたいときにこの書式を使いたい場合が結構あるのですが
2016/02/24(水) 21:55:18.34ID:aRwJuOw8
仕様。仕様書見れば書いてあるよ
let o;
if (o = ...) と書いても結果は変わらないと思う
o がブロックの外に漏れるというだけで
2016/02/24(水) 23:27:54.96ID:cGyLx1gy
>>229
元のJavaScriptや、もしかするとJavaに倣った仕様なんですかね
どうせJavaほど真偽判定に厳しくないんだから、C++並に緩くして欲しいなぁ
2016/02/25(木) 10:03:46.85ID:pumiDuUu
>>230
仕様ってのはecma262(JavaScript)の事ね
TypeScriptはJavaScript(主にES6以降)+型だからJavaScriptの文法を壊すような
機能追加はしちゃ駄目だと思うし、そういうのはほとんど無いと思う
2016/03/03(木) 15:07:54.17ID:RrjC3Y1y
chrome extensionの開発にtypeScript使っています。
型があるとドキュメントを見なくてもメソッドとかプロパティを探せるので
捗ります。

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

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

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

本来の対応方針を教えて下さい。
例えばどこかに専用のファイルを作ってそこで
interface Node {
}
自分用のinterfaceを作るとかですかね?
2016/03/03(木) 15:39:48.75ID:tDWJCpRY
>>232
Node.length って何? すべての Node は持っているわけではないと思うが
エレメントの種類が限定できるなら <any> のところにそのクラス名を書けば?
2016/03/03(木) 17:00:58.63ID:RZS145YN
babelとtypescriptって何が違うの?
あとes6が普及したらtypescript使う意味ってなくならない?
2016/03/03(木) 17:04:13.70ID:RrjC3Y1y
>>233
すいませんでした
lengthプロパティはNodeインターフェースにあるのが正しいのかと勘違いしてました。
Element型にキャストして使うことにしました。
2016/03/03(木) 17:11:25.26ID:RrjC3Y1y
>>234
ES2015 + 型という図式です。
VSCとかと連携すると補完が聞いて素敵です。
EcmaScriptに型が付く予定はないと思うので差別化はできているのではないでしょうか?

逆に言語として学習コストが低くていいのではないかと(ES2015とあんまり変わらない点)。
特に新規のライブラリを使うときはEditorが教えてくれるので、凄くいいです。
2016/03/03(木) 17:29:33.07ID:tDWJCpRY
>>235
Element型にもlengthってあったっけ…

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

TypeScriptと競合するのは、JSDocの型注釈 @type かな
JS+JSDocの記述量を減らしたのがTypeScriptだと思う
2016/03/03(木) 18:49:06.70ID:9M5RRL5I
>>235
ちゃんとリファレンスは読んだのか?
https://developer.mozilla.org/ja/docs/Web/API/Selection
2016/03/04(金) 16:37:36.83ID:5mk497Pl
ちなみにjQueryでDOMをいじくるのが主な目的の人には向かないね
jquery.d.tsがany使いまくりだから素直にJavaScriptをそのまま使う事を勧める

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

直接DOMをいじる場合も型をちゃんと全部把握するかJavaScriptをそのまま使う方がいい
2016/03/04(金) 17:04:24.90ID:JX9S2zww
>>239
むしろ型を把握していない人ほどオススメなのでは。
Editorが教えてくれるようになるし
実行時にエラーになってデバッガでチェックというサイクルを何度も踏む手間が省ける。
2016/03/04(金) 17:55:19.19ID:5mk497Pl
>>240
いやいや、例えばgetElementById()で返すのはHTMLElementだけど
これはlib.d.tsでextends HTMLElement検索すると分かるけど、全てのベースクラスだから
使う時は毎回適切にキャストする必要があって面倒臭い
で、間違うとコンパイルエラーとか実行時エラーになる

ちなみにjQueryとDOMでの話であって一般的には型があった方がいいのはその通り
2016/03/04(金) 20:45:00.83ID:JX9S2zww
>>241
ちなみにHTMLElementの子クラスをキャスト候補として出す機能とかありますかね?
typeScriptというよりもVSCよりな質問かもしれませんけど。
2016/03/04(金) 20:49:58.95ID:JX9S2zww
“error TS2304: Cannot find name” の対応ってどうされてますか?
例えばchrome Extension作りたくて chrome.d.tsを用意したんですが

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

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

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

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

以下の様なエラーメッセージが出ます。
それで依存している型定義ファイルを探して追加するとまたこのエラーメッセージが増えていくので
該当箇所をanyとかにしてごまかしているんですが、
本来の対応方針としてどうすればいいんでしょうか?
2016/03/04(金) 23:31:41.69ID:QtC/Wo3p
>>243
chrome.d.ts ってこれか? https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/chrome/chrome.d.ts
コードの頭に参照があるから /// <reference path='../filesystem/filesystem.d.ts' />
このあたりが必要なのでは https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/filesystem/filesystem.d.ts

よくわからんが DefinitelyTyped を丸ごともらうか、<reference> それぞれを探してみては?
2016/03/05(土) 10:47:09.14ID:E0f29hr+
コード中でキャストしないようにと思うと
interface Document { getElementById(id: 'myElement'): HTMLAnchorElement; }
みたいな定義を読ませておくしかないよね
2016/03/05(土) 12:33:38.03ID:jb1F0oyu
>>244
typingsを使うときに勝手に再帰的に取りに行ってくれるオプションとか無いですかね。
今は諦めて、俺俺d.tsファイルに空のinterface作って対応してます。
2016/03/05(土) 14:42:35.70ID:GXDl5hqY
>>245
JSON2HTMLというか、TSからHTMLを生成すると自然なんだろうか?
デザイン担当との兼ね合いで、そう勝手にはいかないだろうけれど。

>>246
「コンパイルが通らなかったのでキャストを追加しました」
的な危うさを感じるな……まぁ好きにしなされ。
2016/03/05(土) 15:53:12.74ID:JVykV3V4
とりあえずAngular2+TypeScriptを使えば全てが丸く収まる(はず)
2016/03/09(水) 02:26:14.01ID:YWG9oDIr
>>224
TypeScript 1.8はモジュール拡張のサポートを提供する
http://www.infoq.com/jp/news/2016/03/typescript1-8-released
250デフォルトの名無しさん
垢版 |
2016/03/09(水) 13:38:59.08ID:YZujmLFz
C,C++などの
#ifdef ABC

#endif
みたない構文はありますか?
2016/03/09(水) 13:55:35.24ID:wC8YUP1c
>>250
ない。
もし不要なコードの排除が目的なら、単にif文を使っておいて、
出力した .js に Closure Compiler 等の最適化を行うポストプロセスすると
最終的な .min.js からは無駄なコードを消してくれる場合もある。
2016/03/09(水) 14:19:18.40ID:YZujmLFz
>>251
なるほど。
でも、さっそく
if(false){
...  // 不要なコード
}
としてみたら、
Unreachable code detected.
と出ました。
var use= false;
if (use == true) {
...  // 不要なコード
}
で行けました。こんなやり方おかしいですか?

Closure Compiler はビルド後に実行するコマンドでやるのでしょうか?
2016/03/09(水) 15:24:10.02ID:wC8YUP1c
>>252
そんな感じでおk。var vs. const や == vs. === 等は
ポストプロセスとの相性があるだろうから試してくれ。
useの定義だけ単品のファイルにしてtsconfig.jsonで切り替えると良いかも。

もちろんtscの後に実行する。やり方はビルドツール次第。
デバッグ中はminifyされると面倒だから、リリース時だけ使うといい。
2016/03/09(水) 20:12:15.23ID:YZujmLFz
>>253
サンキュウ。
君詳しいな。また教えてくれよ。
2016/03/09(水) 20:52:59.74ID:YZujmLFz
関数のオーバーロードは、
function f(x: number):void;
function f(x: string): void;
function f(x: any): void {
...
}
とやるようですが、引数を取らない同名の関数も一緒に定義したいのですが、
function f():void;
これを上の定義に追加するとエラーします。
どうすれば良いですか?
2016/03/09(水) 21:30:41.53ID:0Gq8vrNb
>>255
それ古い書き方。今時は
function f(x?: number | string): void { }
と書く
2016/03/09(水) 21:32:56.87ID:0Gq8vrNb
古い書き方でやりたい場合は
function f(x?: number):void;
function f(x?: string): void;
function f(x?: any): void {
で出来る
2016/03/10(木) 10:54:45.09ID:z40A+Y3k
>>256>>257
うまくいったわ。ありがとう。

もう一つ教えて。Visual StudioでTypeScript勉強中なのだが、
function f(){
   ...
   return ;
   ...
}
とreturn入れると、
Unreachable code detected.
のエラーになってしまう。
JavaScriptなら警告だけなのに。
エラーになると実行出来ないのだが、対策ありますか?
2016/03/10(木) 11:13:40.34ID:la5WEUke
>>258
--allowUnreachableCode
tsconfig.json に書くなら "allowUnreachableCode": true
テスト用の一時的変更でない限り、高確率でバグだろうからな
2016/03/10(木) 13:16:14.83ID:z40A+Y3k
>>259
レスありがとうございます。
ググったらVS2013ではtsconfig.jsonが使えない?
ようなんですが、どうにかして
allowUnreachableCode を有効化する方法ありますか?
2016/03/14(月) 07:46:17.33ID:CkOIJo3B
JavaScriptの10個くらいのファイルがあり、それをTypeScript化したいのです。
全部のファイルで、同じmodule名で囲ったら、互いに変数や関数を参照出来ると思ったのですが、出来ませんでした。
TypeScriptではC#で言うところのPartial Classみたいにする方法ありますか?
2016/03/14(月) 08:26:19.76ID:rt0F/u0o
>>261
module/namespaceのexportしてないオブジェクトはローカル変数になるからできないね。
他のファイルから使いたいならexportするしかない。外部に公開されちゃうけど。

Partial Classについては、インスタンスなりprototypeなりに関数を代入すれば
似たようなことはできるけど、thisやsuperが扱えないかもしれないな。
インタフェースと declare var の組み合わせは代わりになるだろうか? lib.d.tsを参考に。
2016/03/14(月) 10:05:23.83ID:WJ0CXY/9
JavaScriptの方で擬似的に名前空間化されていないものに
後からnamespaceで囲う必要はないと思う

partial classは実行時に実現できたとしてもclass内部の型定義が不完全になるでしょ
interfaceはいくつでも同名で定義できるので、全てpartialのようなもの
2016/03/14(月) 14:40:23.18ID:CkOIJo3B
>>262 >>263
詳しい説明ありがとうございました。

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

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

結局、その10ファイルの中でも互いに利用する関数はそれぞれexportして互いに利用し、
一方グローバル変数は一つのTSファイルに集めてそれらを全部exportして10個のTSや、他のJSファイルの中で利用しました。
こういう方針でやるのは、正統的ではないですか?
正しい手法があれば教えて下さい。
2016/03/14(月) 15:30:12.67ID:rt0F/u0o
たまたま見つけてタイムリーだったので張っておく。現実装に依存しすぎだとは思うが。
> TypeScriptのクラスをnamespaceで拡張する
ttp://qiita.com/ConquestArrow/items/5d885128f896844698dd

複数ファイルから成る出力全体をモジュールで包む機能って無いんだっけ?
単に function() { ... } で囲んでくれるだけで良いんだけれど。
モジュール内部の各所では使うものの、外部からアクセスする必要のないものはローカル化したい。
2016/03/14(月) 15:55:47.88ID:sQIOa7FM
最近はもうnamespaceを使うのはお勧め出来ないな。ES6の機能にないし
https://blogs.msdn.microsoft.com/typescript/2016/02/22/announcing-typescript-1-8-2/
この最初に書いてある方法がclassを拡張するには今時の方法なんじゃないかな?

ES6のmoduleは1ファイル1モジュールな感じだから全部のファイルを特定のモジュール名で括るという
考えは捨てるべきだと思われる
メインのファイルがそのほかを全部importして必要なものをexportするべきだろうね
2016/03/14(月) 22:56:12.42ID:CkOIJo3B
>>266
教えて貰ったリンク先見ても良く分かりません。
もう少し分かり易い例はどこかに無いでしょうか?
2016/03/15(火) 19:08:51.76ID:oaSHh/yi
>>265
classの中にnamespaceと言うのが
違和感有ります。皆さんはどうですか?
2016/03/15(火) 20:09:42.73ID:9cVBtkdm
どうでもいい
2016/03/16(水) 00:53:23.89ID:dOYh+a0T
どうでも良くない
2016/03/16(水) 01:11:40.10ID:Tb17X3fe
typeScriptと相性かいいフレームワークってどんなのがあります。?
vue.jsと比べるとreactはかなり良さ気なんですが
2016/03/16(水) 13:03:38.46ID:/Zyxq7hl
Angular2かな
まだベータ版だけどTypeScriptとの親和性は抜群というかAngular2自体がTypeScriptで作られてる
だから*.d.tsが要らない
あと最終的にはテンプレート文字列内まで補完が効くようになるらしい
2016/03/17(木) 02:25:53.34ID:ybZd+XDK
namespaceとmoduleの違いが分かりません。
ほとんど同じようなものだと思ってもいいですか?
2016/03/17(木) 09:53:47.06ID:U5XyTqUO
>>272
googleとmsの共同作品みたいなものですね。
reactと比較してのメリットはフルスタックなところですねー。
facebookもflowとか独自にやらずにtypeScript使ってくれればいいのに。
デメリットは学習コストなんですよねー。正直angular1で挫折したので、、、、
typeScript作のフレームワークとかライブラリって他に何がありますかねー?
2016/03/17(木) 10:41:50.84ID:FCgg2gkL
>>273
最初はmoduleしかなかったがTypeScriptのmoduleはJavaScript界隈のモジュールと
違ってnamespaceに近いものだから、後からmoduleの別名でnamespaceが追加された
要するに全く同じもの
そしてmoduleはobsoleteな感じだったが、1.8でまた蒸し返された感じだな
2016/03/17(木) 10:48:46.56ID:ybZd+XDK
>>275
解説ありがとうございました。スッキリしました。
>1.8でまた蒸し返された感じだな
なぜそんなに迷走しているのですか?
2016/03/17(木) 11:30:44.99ID:FCgg2gkL
>>276
言い方がまずかったかもしれん…迷走ではない
Ambient Modulesと呼ばれている機能が少し拡張されただけだ
moduleと1.8で拡張されたdeclare moduleは似てはいるが別モンと考えた方が良かったな
ただのmoduleはnamespaceに置き換えた方が誤解が少なくていいと思うが
declare moduleはモジュール定義を書くものだから必要なものだった
2016/03/17(木) 14:17:48.80ID:LtlKgYTa
playgroundから補完効くの気持ちいいんですけど、
外部ライブラリも取り込めるタイプのやつって無いですかね?
2016/03/17(木) 19:50:11.64ID:ybZd+XDK
http://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です。
2016/03/17(木) 21:18:45.36ID:FCgg2gkL
>>279
呼び出してるとこも書かないとそれだけじゃ分からん
2016/03/17(木) 23:01:06.58ID:ybZd+XDK
>>280
呼び出す以前に、
Array.prototype.remove = function (o) {
        ^^^^^
このremoveの部分で上記のエラーメッセージが出ます。
もし理由や対策が分かれば教えて下さい。
2016/03/17(木) 23:19:57.85ID:2Htg2ogu
>>281
Playgroundなら動くように見えるが、これでいいのか?
http://tiny.cc/1fw49x

tscのバージョンとかビルドオプションにも関係するかもしれない。
型チェックを厳しくすると文句を言われる気がする。
その場合は any にキャストして黙らせるんだろうけど。
283デフォルトの名無しさん
垢版 |
2016/03/18(金) 01:21:57.61ID:xSPdqn8L
>>282
サンプルありがとうございます。
何故かVSだとエラーするんですよね。
2016/03/18(金) 08:30:08.17ID:lH6dzSdk
>>283
君は基本的な姿勢が身についていない
・質問をする場合は、再現可能なコード片を添付せよ
・エラーを特定し、メッセージを加工せずに報告せよ

>>279 だけ見ると、使用時にエラーがあるように読めるが
>>281 では、実装時にエラーがあるように読める(エラー内容は不明)
こんなことでは他人の手を煩わせるだけだ
2016/03/18(金) 09:44:04.92ID:UW/nCw4W
>>279
そのインターフェースが他のソースから見える状態じゃないとエラーになるし
prototypeへの実装も他のコードよりも先に行われないと実行時エラー
そのメッセージだと前者のようだけどな
2016/03/18(金) 13:56:17.03ID:+/FU+lPG
>>274
フレームワークと言えばUWP(ユニバーサルWindowsプラットフォーム)もあるな
TypeScriptでUWPを作るのは情報が少ないけど同じMSだから手厚いサポートがあるはず
2016/03/19(土) 10:14:16.49ID:iKSB+QiN
>>286
JavaScript/HTMLでUWP作れるから問題は無いんじゃない?
(UWPが流行るかはともかく)
VS2015ではまだプロジェクトテンプレートが無いけど、次期版には追加されるでしょ
2016/03/19(土) 12:41:33.04ID:MNmjmgAA
>>287
UWPってqiitaを観た感じはやっていていないけど、
UIをXMLっぽくつくりこめるってやつならReactNativeでいい気がする。
2016/03/21(月) 08:15:39.14ID:O7DG3syI
typeScriptでVSCのextension作りたいんですけど
動作の挙動を見るのに既存のextensionをデバッガで動かしています。
でもVSC自体がそのextensionを使っているとバッティングして上手く動かないので
別プロファイルみたいにして動かしたいんです。
でも、そういう起動オプションが見つからなくて困っています。
お助け下さい。
2016/03/22(火) 00:21:22.49ID:uAieVvDE
typeScriptのOptional型ってswiftのそれとは全然違うような。
interfaceのメンバにしか?使えないの?
返却値もoptional使いたい
2016/03/22(火) 01:42:45.61ID:gYAdXehO
>>290
Swiftとは違うね。単に省略を許すだけ。
TypeScriptではすべての変数がOptional型といえる。
numberを返すと宣言した関数からでも、nullとundefinedは返せてしまう。
ロードマップにある 2.0 Non-nullable types が導入されればマシになるとは思う。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。