http://www.typescriptlang.org/
TypeScript lets you write JavaScript the way you really want to.
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
Any browser. Any host. Any OS. Open Source.
前スレ
http://peace.2ch.net/test/read.cgi/tech/1349187527/
TypeScript part2 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2015/04/30(木) 18:37:29.98ID:ynMflk1l242デフォルトの名無しさん
2016/03/04(金) 20:45:00.83ID:JX9S2zww243デフォルトの名無しさん
2016/03/04(金) 20:49:58.95ID:JX9S2zww “error TS2304: Cannot find name” の対応ってどうされてますか?
例えばchrome Extension作りたくて chrome.d.tsを用意したんですが
RROR in …/typings/browser/ambient/chrome/chrome.d.ts
(5221,70): error TS2304: Cannot find name 'DirectoryEntry'.
ERROR in …/typings/browser/ambient/chrome/chrome.d.ts
(5807,22): error TS2304: Cannot find name 'MediaStreamConstraints'.
ERROR in …/typings/browser/ambient/chrome/chrome.d.ts
(5809,22): error TS2304: Cannot find name 'MediaStreamConstraints'.
ERROR in …/typings/browser/ambient/chrome/chrome.d.ts
(5819,73): error TS2304: Cannot find name 'MediaStream'.
以下の様なエラーメッセージが出ます。
それで依存している型定義ファイルを探して追加するとまたこのエラーメッセージが増えていくので
該当箇所をanyとかにしてごまかしているんですが、
本来の対応方針としてどうすればいいんでしょうか?
例えばchrome Extension作りたくて chrome.d.tsを用意したんですが
RROR in …/typings/browser/ambient/chrome/chrome.d.ts
(5221,70): error TS2304: Cannot find name 'DirectoryEntry'.
ERROR in …/typings/browser/ambient/chrome/chrome.d.ts
(5807,22): error TS2304: Cannot find name 'MediaStreamConstraints'.
ERROR in …/typings/browser/ambient/chrome/chrome.d.ts
(5809,22): error TS2304: Cannot find name 'MediaStreamConstraints'.
ERROR in …/typings/browser/ambient/chrome/chrome.d.ts
(5819,73): error TS2304: Cannot find name 'MediaStream'.
以下の様なエラーメッセージが出ます。
それで依存している型定義ファイルを探して追加するとまたこのエラーメッセージが増えていくので
該当箇所をanyとかにしてごまかしているんですが、
本来の対応方針としてどうすればいいんでしょうか?
244デフォルトの名無しさん
2016/03/04(金) 23:31:41.69ID:QtC/Wo3p >>243
chrome.d.ts ってこれか? https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/chrome/chrome.d.ts
コードの頭に参照があるから /// <reference path='../filesystem/filesystem.d.ts' />
このあたりが必要なのでは https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/filesystem/filesystem.d.ts
よくわからんが DefinitelyTyped を丸ごともらうか、<reference> それぞれを探してみては?
chrome.d.ts ってこれか? https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/chrome/chrome.d.ts
コードの頭に参照があるから /// <reference path='../filesystem/filesystem.d.ts' />
このあたりが必要なのでは https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/filesystem/filesystem.d.ts
よくわからんが DefinitelyTyped を丸ごともらうか、<reference> それぞれを探してみては?
245デフォルトの名無しさん
2016/03/05(土) 10:47:09.14ID:E0f29hr+ コード中でキャストしないようにと思うと
interface Document { getElementById(id: 'myElement'): HTMLAnchorElement; }
みたいな定義を読ませておくしかないよね
interface Document { getElementById(id: 'myElement'): HTMLAnchorElement; }
みたいな定義を読ませておくしかないよね
246デフォルトの名無しさん
2016/03/05(土) 12:33:38.03ID:jb1F0oyu247デフォルトの名無しさん
2016/03/05(土) 14:42:35.70ID:GXDl5hqY248デフォルトの名無しさん
2016/03/05(土) 15:53:12.74ID:JVykV3V4 とりあえずAngular2+TypeScriptを使えば全てが丸く収まる(はず)
249デフォルトの名無しさん
2016/03/09(水) 02:26:14.01ID:YWG9oDIr250デフォルトの名無しさん
2016/03/09(水) 13:38:59.08ID:YZujmLFz C,C++などの
#ifdef ABC
#endif
みたない構文はありますか?
#ifdef ABC
#endif
みたない構文はありますか?
251デフォルトの名無しさん
2016/03/09(水) 13:55:35.24ID:wC8YUP1c >>250
ない。
もし不要なコードの排除が目的なら、単にif文を使っておいて、
出力した .js に Closure Compiler 等の最適化を行うポストプロセスすると
最終的な .min.js からは無駄なコードを消してくれる場合もある。
ない。
もし不要なコードの排除が目的なら、単にif文を使っておいて、
出力した .js に Closure Compiler 等の最適化を行うポストプロセスすると
最終的な .min.js からは無駄なコードを消してくれる場合もある。
252デフォルトの名無しさん
2016/03/09(水) 14:19:18.40ID:YZujmLFz >>251
なるほど。
でも、さっそく
if(false){
... // 不要なコード
}
としてみたら、
Unreachable code detected.
と出ました。
var use= false;
if (use == true) {
... // 不要なコード
}
で行けました。こんなやり方おかしいですか?
Closure Compiler はビルド後に実行するコマンドでやるのでしょうか?
なるほど。
でも、さっそく
if(false){
... // 不要なコード
}
としてみたら、
Unreachable code detected.
と出ました。
var use= false;
if (use == true) {
... // 不要なコード
}
で行けました。こんなやり方おかしいですか?
Closure Compiler はビルド後に実行するコマンドでやるのでしょうか?
253デフォルトの名無しさん
2016/03/09(水) 15:24:10.02ID:wC8YUP1c >>252
そんな感じでおk。var vs. const や == vs. === 等は
ポストプロセスとの相性があるだろうから試してくれ。
useの定義だけ単品のファイルにしてtsconfig.jsonで切り替えると良いかも。
もちろんtscの後に実行する。やり方はビルドツール次第。
デバッグ中はminifyされると面倒だから、リリース時だけ使うといい。
そんな感じでおk。var vs. const や == vs. === 等は
ポストプロセスとの相性があるだろうから試してくれ。
useの定義だけ単品のファイルにしてtsconfig.jsonで切り替えると良いかも。
もちろんtscの後に実行する。やり方はビルドツール次第。
デバッグ中はminifyされると面倒だから、リリース時だけ使うといい。
254デフォルトの名無しさん
2016/03/09(水) 20:12:15.23ID:YZujmLFz255デフォルトの名無しさん
2016/03/09(水) 20:52:59.74ID:YZujmLFz 関数のオーバーロードは、
function f(x: number):void;
function f(x: string): void;
function f(x: any): void {
...
}
とやるようですが、引数を取らない同名の関数も一緒に定義したいのですが、
function f():void;
これを上の定義に追加するとエラーします。
どうすれば良いですか?
function f(x: number):void;
function f(x: string): void;
function f(x: any): void {
...
}
とやるようですが、引数を取らない同名の関数も一緒に定義したいのですが、
function f():void;
これを上の定義に追加するとエラーします。
どうすれば良いですか?
256デフォルトの名無しさん
2016/03/09(水) 21:30:41.53ID:0Gq8vrNb257デフォルトの名無しさん
2016/03/09(水) 21:32:56.87ID:0Gq8vrNb 古い書き方でやりたい場合は
function f(x?: number):void;
function f(x?: string): void;
function f(x?: any): void {
で出来る
function f(x?: number):void;
function f(x?: string): void;
function f(x?: any): void {
で出来る
258デフォルトの名無しさん
2016/03/10(木) 10:54:45.09ID:z40A+Y3k >>256>>257
うまくいったわ。ありがとう。
もう一つ教えて。Visual StudioでTypeScript勉強中なのだが、
function f(){
...
return ;
...
}
とreturn入れると、
Unreachable code detected.
のエラーになってしまう。
JavaScriptなら警告だけなのに。
エラーになると実行出来ないのだが、対策ありますか?
うまくいったわ。ありがとう。
もう一つ教えて。Visual StudioでTypeScript勉強中なのだが、
function f(){
...
return ;
...
}
とreturn入れると、
Unreachable code detected.
のエラーになってしまう。
JavaScriptなら警告だけなのに。
エラーになると実行出来ないのだが、対策ありますか?
259デフォルトの名無しさん
2016/03/10(木) 11:13:40.34ID:la5WEUke >>258
--allowUnreachableCode
tsconfig.json に書くなら "allowUnreachableCode": true
テスト用の一時的変更でない限り、高確率でバグだろうからな
--allowUnreachableCode
tsconfig.json に書くなら "allowUnreachableCode": true
テスト用の一時的変更でない限り、高確率でバグだろうからな
260デフォルトの名無しさん
2016/03/10(木) 13:16:14.83ID:z40A+Y3k >>259
レスありがとうございます。
ググったらVS2013ではtsconfig.jsonが使えない?
ようなんですが、どうにかして
allowUnreachableCode を有効化する方法ありますか?
レスありがとうございます。
ググったらVS2013ではtsconfig.jsonが使えない?
ようなんですが、どうにかして
allowUnreachableCode を有効化する方法ありますか?
261デフォルトの名無しさん
2016/03/14(月) 07:46:17.33ID:CkOIJo3B JavaScriptの10個くらいのファイルがあり、それをTypeScript化したいのです。
全部のファイルで、同じmodule名で囲ったら、互いに変数や関数を参照出来ると思ったのですが、出来ませんでした。
TypeScriptではC#で言うところのPartial Classみたいにする方法ありますか?
全部のファイルで、同じmodule名で囲ったら、互いに変数や関数を参照出来ると思ったのですが、出来ませんでした。
TypeScriptではC#で言うところのPartial Classみたいにする方法ありますか?
262デフォルトの名無しさん
2016/03/14(月) 08:26:19.76ID:rt0F/u0o >>261
module/namespaceのexportしてないオブジェクトはローカル変数になるからできないね。
他のファイルから使いたいならexportするしかない。外部に公開されちゃうけど。
Partial Classについては、インスタンスなりprototypeなりに関数を代入すれば
似たようなことはできるけど、thisやsuperが扱えないかもしれないな。
インタフェースと declare var の組み合わせは代わりになるだろうか? lib.d.tsを参考に。
module/namespaceのexportしてないオブジェクトはローカル変数になるからできないね。
他のファイルから使いたいならexportするしかない。外部に公開されちゃうけど。
Partial Classについては、インスタンスなりprototypeなりに関数を代入すれば
似たようなことはできるけど、thisやsuperが扱えないかもしれないな。
インタフェースと declare var の組み合わせは代わりになるだろうか? lib.d.tsを参考に。
263デフォルトの名無しさん
2016/03/14(月) 10:05:23.83ID:WJ0CXY/9 JavaScriptの方で擬似的に名前空間化されていないものに
後からnamespaceで囲う必要はないと思う
partial classは実行時に実現できたとしてもclass内部の型定義が不完全になるでしょ
interfaceはいくつでも同名で定義できるので、全てpartialのようなもの
後からnamespaceで囲う必要はないと思う
partial classは実行時に実現できたとしてもclass内部の型定義が不完全になるでしょ
interfaceはいくつでも同名で定義できるので、全てpartialのようなもの
264デフォルトの名無しさん
2016/03/14(月) 14:40:23.18ID:CkOIJo3B >>262 >>263
詳しい説明ありがとうございました。
>JavaScriptの方で擬似的に名前空間化されていないものに
>後からnamespaceで囲う必要はないと思う
JSのファイルは全部で50個くらいあり、
全部をTS化したいのです。
それで、取りあえず、ある特定の機能に関連している10ファイルを一つにしたくて、
同じmodule名で囲ってみました。
結局、その10ファイルの中でも互いに利用する関数はそれぞれexportして互いに利用し、
一方グローバル変数は一つのTSファイルに集めてそれらを全部exportして10個のTSや、他のJSファイルの中で利用しました。
こういう方針でやるのは、正統的ではないですか?
正しい手法があれば教えて下さい。
詳しい説明ありがとうございました。
>JavaScriptの方で擬似的に名前空間化されていないものに
>後からnamespaceで囲う必要はないと思う
JSのファイルは全部で50個くらいあり、
全部をTS化したいのです。
それで、取りあえず、ある特定の機能に関連している10ファイルを一つにしたくて、
同じmodule名で囲ってみました。
結局、その10ファイルの中でも互いに利用する関数はそれぞれexportして互いに利用し、
一方グローバル変数は一つのTSファイルに集めてそれらを全部exportして10個のTSや、他のJSファイルの中で利用しました。
こういう方針でやるのは、正統的ではないですか?
正しい手法があれば教えて下さい。
265デフォルトの名無しさん
2016/03/14(月) 15:30:12.67ID:rt0F/u0o たまたま見つけてタイムリーだったので張っておく。現実装に依存しすぎだとは思うが。
> TypeScriptのクラスをnamespaceで拡張する
ttp://qiita.com/ConquestArrow/items/5d885128f896844698dd
複数ファイルから成る出力全体をモジュールで包む機能って無いんだっけ?
単に function() { ... } で囲んでくれるだけで良いんだけれど。
モジュール内部の各所では使うものの、外部からアクセスする必要のないものはローカル化したい。
> TypeScriptのクラスをnamespaceで拡張する
ttp://qiita.com/ConquestArrow/items/5d885128f896844698dd
複数ファイルから成る出力全体をモジュールで包む機能って無いんだっけ?
単に function() { ... } で囲んでくれるだけで良いんだけれど。
モジュール内部の各所では使うものの、外部からアクセスする必要のないものはローカル化したい。
266デフォルトの名無しさん
2016/03/14(月) 15:55:47.88ID:sQIOa7FM 最近はもうnamespaceを使うのはお勧め出来ないな。ES6の機能にないし
https://blogs.msdn.microsoft.com/typescript/2016/02/22/announcing-typescript-1-8-2/
この最初に書いてある方法がclassを拡張するには今時の方法なんじゃないかな?
ES6のmoduleは1ファイル1モジュールな感じだから全部のファイルを特定のモジュール名で括るという
考えは捨てるべきだと思われる
メインのファイルがそのほかを全部importして必要なものをexportするべきだろうね
https://blogs.msdn.microsoft.com/typescript/2016/02/22/announcing-typescript-1-8-2/
この最初に書いてある方法がclassを拡張するには今時の方法なんじゃないかな?
ES6のmoduleは1ファイル1モジュールな感じだから全部のファイルを特定のモジュール名で括るという
考えは捨てるべきだと思われる
メインのファイルがそのほかを全部importして必要なものをexportするべきだろうね
267デフォルトの名無しさん
2016/03/14(月) 22:56:12.42ID:CkOIJo3B268デフォルトの名無しさん
2016/03/15(火) 19:08:51.76ID:oaSHh/yi269デフォルトの名無しさん
2016/03/15(火) 20:09:42.73ID:9cVBtkdm どうでもいい
270デフォルトの名無しさん
2016/03/16(水) 00:53:23.89ID:dOYh+a0T どうでも良くない
271デフォルトの名無しさん
2016/03/16(水) 01:11:40.10ID:Tb17X3fe typeScriptと相性かいいフレームワークってどんなのがあります。?
vue.jsと比べるとreactはかなり良さ気なんですが
vue.jsと比べるとreactはかなり良さ気なんですが
272デフォルトの名無しさん
2016/03/16(水) 13:03:38.46ID:/Zyxq7hl Angular2かな
まだベータ版だけどTypeScriptとの親和性は抜群というかAngular2自体がTypeScriptで作られてる
だから*.d.tsが要らない
あと最終的にはテンプレート文字列内まで補完が効くようになるらしい
まだベータ版だけどTypeScriptとの親和性は抜群というかAngular2自体がTypeScriptで作られてる
だから*.d.tsが要らない
あと最終的にはテンプレート文字列内まで補完が効くようになるらしい
273デフォルトの名無しさん
2016/03/17(木) 02:25:53.34ID:ybZd+XDK namespaceとmoduleの違いが分かりません。
ほとんど同じようなものだと思ってもいいですか?
ほとんど同じようなものだと思ってもいいですか?
274デフォルトの名無しさん
2016/03/17(木) 09:53:47.06ID:U5XyTqUO >>272
googleとmsの共同作品みたいなものですね。
reactと比較してのメリットはフルスタックなところですねー。
facebookもflowとか独自にやらずにtypeScript使ってくれればいいのに。
デメリットは学習コストなんですよねー。正直angular1で挫折したので、、、、
typeScript作のフレームワークとかライブラリって他に何がありますかねー?
googleとmsの共同作品みたいなものですね。
reactと比較してのメリットはフルスタックなところですねー。
facebookもflowとか独自にやらずにtypeScript使ってくれればいいのに。
デメリットは学習コストなんですよねー。正直angular1で挫折したので、、、、
typeScript作のフレームワークとかライブラリって他に何がありますかねー?
275デフォルトの名無しさん
2016/03/17(木) 10:41:50.84ID:FCgg2gkL >>273
最初はmoduleしかなかったがTypeScriptのmoduleはJavaScript界隈のモジュールと
違ってnamespaceに近いものだから、後からmoduleの別名でnamespaceが追加された
要するに全く同じもの
そしてmoduleはobsoleteな感じだったが、1.8でまた蒸し返された感じだな
最初はmoduleしかなかったがTypeScriptのmoduleはJavaScript界隈のモジュールと
違ってnamespaceに近いものだから、後からmoduleの別名でnamespaceが追加された
要するに全く同じもの
そしてmoduleはobsoleteな感じだったが、1.8でまた蒸し返された感じだな
276デフォルトの名無しさん
2016/03/17(木) 10:48:46.56ID:ybZd+XDK277デフォルトの名無しさん
2016/03/17(木) 11:30:44.99ID:FCgg2gkL >>276
言い方がまずかったかもしれん…迷走ではない
Ambient Modulesと呼ばれている機能が少し拡張されただけだ
moduleと1.8で拡張されたdeclare moduleは似てはいるが別モンと考えた方が良かったな
ただのmoduleはnamespaceに置き換えた方が誤解が少なくていいと思うが
declare moduleはモジュール定義を書くものだから必要なものだった
言い方がまずかったかもしれん…迷走ではない
Ambient Modulesと呼ばれている機能が少し拡張されただけだ
moduleと1.8で拡張されたdeclare moduleは似てはいるが別モンと考えた方が良かったな
ただのmoduleはnamespaceに置き換えた方が誤解が少なくていいと思うが
declare moduleはモジュール定義を書くものだから必要なものだった
278デフォルトの名無しさん
2016/03/17(木) 14:17:48.80ID:LtlKgYTa playgroundから補完効くの気持ちいいんですけど、
外部ライブラリも取り込めるタイプのやつって無いですかね?
外部ライブラリも取り込めるタイプのやつって無いですかね?
279デフォルトの名無しさん
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です。
にある例
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です。
280デフォルトの名無しさん
2016/03/17(木) 21:18:45.36ID:FCgg2gkL >>279
呼び出してるとこも書かないとそれだけじゃ分からん
呼び出してるとこも書かないとそれだけじゃ分からん
281デフォルトの名無しさん
2016/03/17(木) 23:01:06.58ID:ybZd+XDK >>280
呼び出す以前に、
Array.prototype.remove = function (o) {
^^^^^
このremoveの部分で上記のエラーメッセージが出ます。
もし理由や対策が分かれば教えて下さい。
呼び出す以前に、
Array.prototype.remove = function (o) {
^^^^^
このremoveの部分で上記のエラーメッセージが出ます。
もし理由や対策が分かれば教えて下さい。
282デフォルトの名無しさん
2016/03/17(木) 23:19:57.85ID:2Htg2ogu >>281
Playgroundなら動くように見えるが、これでいいのか?
http://tiny.cc/1fw49x
tscのバージョンとかビルドオプションにも関係するかもしれない。
型チェックを厳しくすると文句を言われる気がする。
その場合は any にキャストして黙らせるんだろうけど。
Playgroundなら動くように見えるが、これでいいのか?
http://tiny.cc/1fw49x
tscのバージョンとかビルドオプションにも関係するかもしれない。
型チェックを厳しくすると文句を言われる気がする。
その場合は any にキャストして黙らせるんだろうけど。
283デフォルトの名無しさん
2016/03/18(金) 01:21:57.61ID:xSPdqn8L284デフォルトの名無しさん
2016/03/18(金) 08:30:08.17ID:lH6dzSdk285デフォルトの名無しさん
2016/03/18(金) 09:44:04.92ID:UW/nCw4W286デフォルトの名無しさん
2016/03/18(金) 13:56:17.03ID:+/FU+lPG287デフォルトの名無しさん
2016/03/19(土) 10:14:16.49ID:iKSB+QiN288デフォルトの名無しさん
2016/03/19(土) 12:41:33.04ID:MNmjmgAA289デフォルトの名無しさん
2016/03/21(月) 08:15:39.14ID:O7DG3syI typeScriptでVSCのextension作りたいんですけど
動作の挙動を見るのに既存のextensionをデバッガで動かしています。
でもVSC自体がそのextensionを使っているとバッティングして上手く動かないので
別プロファイルみたいにして動かしたいんです。
でも、そういう起動オプションが見つからなくて困っています。
お助け下さい。
動作の挙動を見るのに既存のextensionをデバッガで動かしています。
でもVSC自体がそのextensionを使っているとバッティングして上手く動かないので
別プロファイルみたいにして動かしたいんです。
でも、そういう起動オプションが見つからなくて困っています。
お助け下さい。
290デフォルトの名無しさん
2016/03/22(火) 00:21:22.49ID:uAieVvDE typeScriptのOptional型ってswiftのそれとは全然違うような。
interfaceのメンバにしか?使えないの?
返却値もoptional使いたい
interfaceのメンバにしか?使えないの?
返却値もoptional使いたい
291デフォルトの名無しさん
2016/03/22(火) 01:42:45.61ID:gYAdXehO >>290
Swiftとは違うね。単に省略を許すだけ。
TypeScriptではすべての変数がOptional型といえる。
numberを返すと宣言した関数からでも、nullとundefinedは返せてしまう。
ロードマップにある 2.0 Non-nullable types が導入されればマシになるとは思う。
Swiftとは違うね。単に省略を許すだけ。
TypeScriptではすべての変数がOptional型といえる。
numberを返すと宣言した関数からでも、nullとundefinedは返せてしまう。
ロードマップにある 2.0 Non-nullable types が導入されればマシになるとは思う。
292デフォルトの名無しさん
2016/03/22(火) 13:37:01.50ID:r8fC7r2k --strictNullChecks 一発でデフォがNon-nullableになるのは助かる
--noImplicitAny --noImplicitReturns と必須オプションがまた増えたな
--noImplicitAny --noImplicitReturns と必須オプションがまた増えたな
293デフォルトの名無しさん
2016/03/22(火) 17:31:59.65ID:DpQ/EBxZ nullやundefinedを許していない状況で
省略可能引数にnullチェックが必要になるのは少し変な気がするから使わなさそう
省略可能引数にnullチェックが必要になるのは少し変な気がするから使わなさそう
294デフォルトの名無しさん
2016/03/22(火) 17:40:46.01ID:uAieVvDE >>292
なるほどオプションで有効になる感じですね。
早く試してみたいです。
でも外部ライブラリとの整合性をどうするのか気になります。
swiftだと!がついているImplicitly Unwrapped Optional型とかいうのになって
明確に危険な型だと分かるようにしてますけど、typeScriptも似たようなものになるんでしょうか?
なるほどオプションで有効になる感じですね。
早く試してみたいです。
でも外部ライブラリとの整合性をどうするのか気になります。
swiftだと!がついているImplicitly Unwrapped Optional型とかいうのになって
明確に危険な型だと分かるようにしてますけど、typeScriptも似たようなものになるんでしょうか?
295デフォルトの名無しさん
2016/03/22(火) 18:03:22.23ID:gYAdXehO フロー解析をするようになってきているから
use(x) はエラーになって
if (x != null) { use(x) } はエラーにならない
くらいのことをやってくれるはず。Swiftの!型に対応するものは要らない。
use(x) はエラーになって
if (x != null) { use(x) } はエラーにならない
くらいのことをやってくれるはず。Swiftの!型に対応するものは要らない。
296デフォルトの名無しさん
2016/03/22(火) 21:46:36.58ID:r8fC7r2k >>293
hoge?: number, じゃなくて hoge = 0, とかにすれば別にnullチェック要らないじゃん
で、
interface {
hoge?: number
と
function func(hoge?: number)
の
両方共nullableかつ省略可能で hoge: number? だと省略不可でnullableと考えると
一貫していて結構いいじゃない
hoge?: number, じゃなくて hoge = 0, とかにすれば別にnullチェック要らないじゃん
で、
interface {
hoge?: number
と
function func(hoge?: number)
の
両方共nullableかつ省略可能で hoge: number? だと省略不可でnullableと考えると
一貫していて結構いいじゃない
297デフォルトの名無しさん
2016/03/22(火) 21:49:41.79ID:r8fC7r2k let hoge: number?;
とletの場合は省略するという考えがないからnumber?でnullableということだな
とletの場合は省略するという考えがないからnumber?でnullableということだな
298デフォルトの名無しさん
2016/03/22(火) 21:53:50.90ID:uAieVvDE >>295
ありがとうございますちなみにそのフロー解析はドコまでやってくれるんでしょうか?
例えばtypeScript上で書いたFuncAがあって
let a= FuncA()
use(a)
みたいにFuncAの中で返却値がnullチェックされていれば
上記のようにnullチェック無しで使えるんでしょうか?
ありがとうございますちなみにそのフロー解析はドコまでやってくれるんでしょうか?
例えばtypeScript上で書いたFuncAがあって
let a= FuncA()
use(a)
みたいにFuncAの中で返却値がnullチェックされていれば
上記のようにnullチェック無しで使えるんでしょうか?
299デフォルトの名無しさん
2016/03/22(火) 22:18:13.97ID:gYAdXehO >>298
まだリリースはされていないからわからないよ。期待はしているけど。
その例なら function FuncA(): Foo? か : Foo か、関数の返値の宣言を見るのが自然じゃない?
FuncAの実装の中まで追うことはないだろうし、するべきではないとさえ思う。
それにしても、省略可能な引数の書き方ってどうなるんだろう?
function func(hoge?: number?) ← 厳密だが、?を2個も書くの?
function func(hoge?: number) ← 言葉通りだとnon-nullableなのにundefinedになりうる?
function func(hoge: number?) ← nullは渡せるが省略できない?
まだリリースはされていないからわからないよ。期待はしているけど。
その例なら function FuncA(): Foo? か : Foo か、関数の返値の宣言を見るのが自然じゃない?
FuncAの実装の中まで追うことはないだろうし、するべきではないとさえ思う。
それにしても、省略可能な引数の書き方ってどうなるんだろう?
function func(hoge?: number?) ← 厳密だが、?を2個も書くの?
function func(hoge?: number) ← 言葉通りだとnon-nullableなのにundefinedになりうる?
function func(hoge: number?) ← nullは渡せるが省略できない?
300デフォルトの名無しさん
2016/03/22(火) 22:43:28.85ID:BfQhAJB6 皆さんどういう環境でtypescriptやっているのですか?
winのvisual studioは少数派かな?
winのvisual studioは少数派かな?
301デフォルトの名無しさん
2016/03/23(水) 11:41:36.25ID:oLR8GLsF 引数が省略されたかどうかを調べるための構文がないと不自然だな
hoge == nullみたいに使わないはずのキーワードが出てくるのはやっぱり変
hoge == nullみたいに使わないはずのキーワードが出てくるのはやっぱり変
302デフォルトの名無しさん
2016/03/23(水) 13:40:01.83ID:s9X+rvra >>301
だからNon-nullableがデフォだからって絶対nullが出てこないわけじゃないでしょ
DOMだのWebAPIは普通にnullを返すし自前の関数だってnullとかundefinedを返したいことは普通にある
それと引き数の省略には func(hoge = -1) とかにすればいいんだよ
だからNon-nullableがデフォだからって絶対nullが出てこないわけじゃないでしょ
DOMだのWebAPIは普通にnullを返すし自前の関数だってnullとかundefinedを返したいことは普通にある
それと引き数の省略には func(hoge = -1) とかにすればいいんだよ
303デフォルトの名無しさん
2016/03/23(水) 14:26:23.62ID:2mxU+x1U http://qiita.com/mizchi/items/95ee0101ac22e4b7b662
上記記事でtypeScriptディスられているんですが、
> 最近のTypeScript は動作環境のロックインが多くなりつつあり、またコンパイル後のJSはedgeで動くからこれでいいんだ、というMSの姿勢が若干透けて見えて、ちょっと距離を置きたい気分です。
というのは本当なんでしょうか?
具体的にどういうものがあるのか知りたいです。
上記記事でtypeScriptディスられているんですが、
> 最近のTypeScript は動作環境のロックインが多くなりつつあり、またコンパイル後のJSはedgeで動くからこれでいいんだ、というMSの姿勢が若干透けて見えて、ちょっと距離を置きたい気分です。
というのは本当なんでしょうか?
具体的にどういうものがあるのか知りたいです。
304デフォルトの名無しさん
2016/03/23(水) 15:06:32.16ID:0dLy2K+b jsあるいはtsに
nullとundefinedが有りますが、nullだけで十分だと思うんですが皆さんそう思わない?
nullとundefinedが有りますが、nullだけで十分だと思うんですが皆さんそう思わない?
305デフォルトの名無しさん
2016/03/23(水) 16:16:09.46ID:+D1Yzwu/ >>303
っ「要出典」
es5モードならほとんどのブラウザで動くし、es6だとEdgeでさえ動かない。node用。
一時期 async/await を強く推していて、.NET系言語、ES、Python にまで採用させた
(良く言えば、開発に協力した)のは、煙たがられていた印象はある。
っ「要出典」
es5モードならほとんどのブラウザで動くし、es6だとEdgeでさえ動かない。node用。
一時期 async/await を強く推していて、.NET系言語、ES、Python にまで採用させた
(良く言えば、開発に協力した)のは、煙たがられていた印象はある。
306デフォルトの名無しさん
2016/03/23(水) 16:20:06.05ID:s9X+rvra 機能的にundefinedで名前がnullのが1つあればよかった
nullはJavaScriptの癌と言える
TypeScriptのコーディングスタイルにもnullは使うなと書いてあるし
tslintでも警告を出せるからnullはもう使わないようにすべき
nullはJavaScriptの癌と言える
TypeScriptのコーディングスタイルにもnullは使うなと書いてあるし
tslintでも警告を出せるからnullはもう使わないようにすべき
307デフォルトの名無しさん
2016/03/23(水) 16:42:09.62ID:+D1Yzwu/ >>304
JSだとさらに「undefinedを保持」と「未定義」の区別がある場合も。
「不在」と「不明」は別という考え方もあったが、結局、一般人には使いこなせなかったんだろう。
ちなみにLuaはnilしかなく、nilを代入するとJSのdelete演算子になるんだが、
「保持できるnil」(キーとしては残る)のためにnullが欲しいという話もたまに出る。
何が最良かは難しいところだな。
JSだとさらに「undefinedを保持」と「未定義」の区別がある場合も。
「不在」と「不明」は別という考え方もあったが、結局、一般人には使いこなせなかったんだろう。
ちなみにLuaはnilしかなく、nilを代入するとJSのdelete演算子になるんだが、
「保持できるnil」(キーとしては残る)のためにnullが欲しいという話もたまに出る。
何が最良かは難しいところだな。
308デフォルトの名無しさん
2016/03/23(水) 16:55:04.92ID:4qmKzsXk return 'undefined';
309デフォルトの名無しさん
2016/03/23(水) 17:35:37.11ID:2mxU+x1U interface A {
a:string
}
interface B {
b:string
}
interface C {
c:string
}
type Hoge = A|B|C
すいません。上記のようなHoge型があったとして
Hoge型をA,B,Cの何れかのinterfaceに合致するかテストする方法ってどうすればいいんでしょうか?
できれば各interfaceのメンバに触れずに確認したいのですが、、、、
a:string
}
interface B {
b:string
}
interface C {
c:string
}
type Hoge = A|B|C
すいません。上記のようなHoge型があったとして
Hoge型をA,B,Cの何れかのinterfaceに合致するかテストする方法ってどうすればいいんでしょうか?
できれば各interfaceのメンバに触れずに確認したいのですが、、、、
310デフォルトの名無しさん
2016/03/23(水) 23:04:51.01ID:+D1Yzwu/311デフォルトの名無しさん
2016/03/24(木) 14:14:40.73ID:v9bzQn8L TypeScriptはコンパイル時にはinterfaceを認識してるはずだが
コードでそれをチェックする術がないな (今後も追加される事は絶対ないだろうが)
しかしinterfaceのどれかに合致するかっていう考え方ちょっと違うな
例えば
interface A {
a:number
}
interface B {
b:string
}
があれば
{
a:1,
b:"hoge"
}
はどっちにも合致する訳だから、コンパイルが通ればどれか(または両方)のinterfaceに合致してる
と判別が出来るってだけのものだよ
コードでそれをチェックする術がないな (今後も追加される事は絶対ないだろうが)
しかしinterfaceのどれかに合致するかっていう考え方ちょっと違うな
例えば
interface A {
a:number
}
interface B {
b:string
}
があれば
{
a:1,
b:"hoge"
}
はどっちにも合致する訳だから、コンパイルが通ればどれか(または両方)のinterfaceに合致してる
と判別が出来るってだけのものだよ
312デフォルトの名無しさん
2016/03/24(木) 17:51:19.94ID:QUxdzUzn chromeでデバッグできますか?
313デフォルトの名無しさん
2016/03/24(木) 18:45:20.46ID:bRX025wQ314デフォルトの名無しさん
2016/03/25(金) 02:00:24.75ID:G+z1ebGz >>312
weboack使ってるけどなんの問題もなくtsファイルにbreakpointが貼れる
weboack使ってるけどなんの問題もなくtsファイルにbreakpointが貼れる
315デフォルトの名無しさん
2016/03/25(金) 02:00:53.64ID:G+z1ebGz >>314
webpackです。typo
webpackです。typo
316デフォルトの名無しさん
2016/03/25(金) 12:36:24.15ID:Ib2txsDS >>314
iisサーバーは?
iisサーバーは?
317デフォルトの名無しさん
2016/03/27(日) 23:00:49.72ID:FjCKG/3R typeScriptでWeakMapっていつから使えるようになるんですか?
ES2015から使えるものっててっきりtypeScriptでもつかえるものかと
ES2015から使えるものっててっきりtypeScriptでもつかえるものかと
318デフォルトの名無しさん
2016/03/28(月) 14:50:43.22ID:6ufq8Y0K --target ES6にすれば使えるっていうかそれぐらい察しろ
319デフォルトの名無しさん
2016/03/28(月) 19:56:00.22ID:YM89lTlN320デフォルトの名無しさん
2016/03/28(月) 21:20:10.15ID:K6EkYblL321デフォルトの名無しさん
2016/03/29(火) 00:12:34.26ID:clo72TFv >>320
なるほど。てっきりtargetって出力するjsコードの対応バージョンでしかなくて、
typeScriptの仕様自体はどのtargetでも変化しないと思い込んでました。
つまりES2015のpolyfillの役割も果たしてくれるとばかり思っていました。
ありがとうございます。
なるほど。てっきりtargetって出力するjsコードの対応バージョンでしかなくて、
typeScriptの仕様自体はどのtargetでも変化しないと思い込んでました。
つまりES2015のpolyfillの役割も果たしてくれるとばかり思っていました。
ありがとうございます。
322デフォルトの名無しさん
2016/03/29(火) 10:54:45.27ID:NGEgZfA0 >>321
基本TypeScriptはES2015のpolifillだと思っていいけど
単に少ないコードで実装出来るものしか対応してないだけだ
__extendsとか__decorateとかね
2.0でasync/awaitもES5で使えるようになるけど、もしWeakMapを対応したら
巨大なコードが*.jsの頭に引っ付くことになるけどそんなの嫌だろ
基本TypeScriptはES2015のpolifillだと思っていいけど
単に少ないコードで実装出来るものしか対応してないだけだ
__extendsとか__decorateとかね
2.0でasync/awaitもES5で使えるようになるけど、もしWeakMapを対応したら
巨大なコードが*.jsの頭に引っ付くことになるけどそんなの嫌だろ
323デフォルトの名無しさん
2016/04/05(火) 23:45:55.11ID:nWoaZGhX JavaのNashornにrequire関数組み込んでTypeScript使えるようにしたが結構楽しいわ
letの暗黙リネームが実行時に何か不具合起こすんじゃないかと少々気になる
letの暗黙リネームが実行時に何か不具合起こすんじゃないかと少々気になる
324デフォルトの名無しさん
2016/04/06(水) 20:01:43.86ID:NydnT1H+ >>323
letが導入されてから1.8になるまでforループ内でlet使うと特定の条件で実行時エラーを起こしてた
1.8で修正されたから古いバージョンの場合は気を付けた方がいいけど1.8以降は不具合なんて起こさないはず
letが導入されてから1.8になるまでforループ内でlet使うと特定の条件で実行時エラーを起こしてた
1.8で修正されたから古いバージョンの場合は気を付けた方がいいけど1.8以降は不具合なんて起こさないはず
325デフォルトの名無しさん
2016/04/11(月) 23:59:54.54ID:/4tKcoWK typescript初心者です。
Visual Studioで、
module mod {
function func() {
alert('func');
}
}
が、
var mod;
(function (mod) {
function func() {
alert('func');
}
})(mod || (mod = {}));
になるのですが、分からないのは、
(mod || (mod = {}));
の部分です。
これは何でしょうか?
どなたか解説お願いいたします。あるいはヒントなどお教えください。
Visual Studioで、
module mod {
function func() {
alert('func');
}
}
が、
var mod;
(function (mod) {
function func() {
alert('func');
}
})(mod || (mod = {}));
になるのですが、分からないのは、
(mod || (mod = {}));
の部分です。
これは何でしょうか?
どなたか解説お願いいたします。あるいはヒントなどお教えください。
326デフォルトの名無しさん
2016/04/12(火) 00:19:14.57ID:ep3rTpAI327デフォルトの名無しさん
2016/04/12(火) 00:20:23.42ID:L6C4Yo9J (A || B)はAもしくはBが偽じゃなければその内容(結果)を返す特性があって
単純に言うとmodが空ならオブジェクト代入して無名関数に渡すよってこと
単純に言うとmodが空ならオブジェクト代入して無名関数に渡すよってこと
328デフォルトの名無しさん
2016/04/12(火) 00:47:40.67ID:X3YsmN+g329デフォルトの名無しさん
2016/04/12(火) 00:48:40.40ID:X3YsmN+g から生成される二つのjsファイルを単純に連結して一つのファイルにします。
----------------
var mod;
(function (mod) {
function func1() {
alert('func1');
}
})(mod || (mod = {}));
var mod;
(function (mod) {
function func2() {
alert('func2');
}
})(mod || (mod = {}));
----------------
こういう単純な例だと問題は無かったのですが、実際の状況では連結したJSの実行時にエラーする場合がありました。
少し調べた限りでは、エラーの有無はJSファイルを連結する順番に依存するようなのですが、そういう事はありますか?
やりたいのは、複数のJSファイルをmoduleで囲ってTS化して、そうやって出来上がったJSファイルを一つのファイルに連結したいのですが、エラーが出て行き詰っています。
こういうやり方は間違いですか?
----------------
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ファイルを一つのファイルに連結したいのですが、エラーが出て行き詰っています。
こういうやり方は間違いですか?
330デフォルトの名無しさん
2016/04/12(火) 10:30:36.29ID:ep3rTpAI >>329
連結する順番でエラーになることはある。
特にグローバルスコープ(関数の外)で処理が走る場合かな?
tslint を入れて no-use-before-declare (宣言前に使うと警告) で
チェックする手はあるかもしれない。
連結する順番でエラーになることはある。
特にグローバルスコープ(関数の外)で処理が走る場合かな?
tslint を入れて no-use-before-declare (宣言前に使うと警告) で
チェックする手はあるかもしれない。
331デフォルトの名無しさん
2016/04/12(火) 12:30:46.37ID:MBVppC7j332デフォルトの名無しさん
2016/04/12(火) 21:56:30.51ID:aXmXxCLh TypeScript 2.0プレビュー
http://www.infoq.com/jp/news/2016/04/typescript-2-preview
http://www.infoq.com/jp/news/2016/04/typescript-2-preview
333デフォルトの名無しさん
2016/04/13(水) 16:45:42.60ID:xgAfpouO おおって思ってchannel9の動画見てみたらマイクロソフトの人が未だにtsd
使ってデモしてたんだけどtsd非推奨じゃなかったんかい
使ってデモしてたんだけどtsd非推奨じゃなかったんかい
334デフォルトの名無しさん
2016/04/13(水) 16:56:49.53ID:xgAfpouO 面白いねTypeScript2.0
undefinedとnullはそれぞれ独立した型になって
let a: number|null|undefined
みたいに宣言するようになるのか
undefinedとnullはそれぞれ独立した型になって
let a: number|null|undefined
みたいに宣言するようになるのか
335デフォルトの名無しさん
2016/04/13(水) 22:27:08.77ID:JKiuLOht voidでよくね
336デフォルトの名無しさん
2016/04/14(木) 12:17:58.56ID:ea0e/BMW C#のvirtual,overrideも実装してくれよ
issueには何度かあがってるけどその度に否定されてんだよな、何でだ
issueには何度かあがってるけどその度に否定されてんだよな、何でだ
337デフォルトの名無しさん
2016/05/01(日) 13:04:39.03ID:tKi6j9CT 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
4
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
4
338デフォルトの名無しさん
2016/05/01(日) 20:44:35.23ID:sHMevs8d Visual Studio Comm. 2015でTypeScript 1.7.4.0を使ってます。
プロジェクトをビルドしてデバッグしても変更が反映されなくなりました。
仕方なく新しいプロジェクトを作ってソースを移動させているのですが、対処法はありますか?
プロジェクトをビルドしてデバッグしても変更が反映されなくなりました。
仕方なく新しいプロジェクトを作ってソースを移動させているのですが、対処法はありますか?
339デフォルトの名無しさん
2016/05/01(日) 21:13:58.28ID:1U34S4Ix340デフォルトの名無しさん
2016/05/02(月) 10:47:24.02ID:H1b5QbBD レスありがとうございます。こんなに早く反応があるとは思いませんでした。見逃してしまって申し訳ないです。
>何の変更がどこに反映されないのか
ソースコードの変更です。
ビルドして実行してもjsが前回のビルドのままで困っていました。
>tsからjsが自動生成されないと言う意味?
>もしそうならtsに文法エラーが有るんじゃないか?
仰る通り文法エラーがあったみたいです。今では正常に実行できています。ご迷惑をおかけしました。
それにしても間違ったコードを書いてもビルドエラーにはならないんですね……。
これではどこでミスったかチェックしにくい。
>何の変更がどこに反映されないのか
ソースコードの変更です。
ビルドして実行してもjsが前回のビルドのままで困っていました。
>tsからjsが自動生成されないと言う意味?
>もしそうならtsに文法エラーが有るんじゃないか?
仰る通り文法エラーがあったみたいです。今では正常に実行できています。ご迷惑をおかけしました。
それにしても間違ったコードを書いてもビルドエラーにはならないんですね……。
これではどこでミスったかチェックしにくい。
341デフォルトの名無しさん
2016/05/02(月) 16:08:44.94ID:WvgoLY0A 「新しいプロジェクトを作ってソースを移動させ」たらうまくいくのだがという話じゃなかったのか
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 寝癖ってどうしたらつかなくなるんや?
- 自閉症が「んなっしょい」と連呼するお🏡
- 【画像】エロい一般漫画はなぜこんなに抜けるのか
- BTSのバラエティ面白すぎワロタ
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
