ラベル typescript の投稿を表示しています。 すべての投稿を表示
ラベル typescript の投稿を表示しています。 すべての投稿を表示

2017/06/21

[TypeScript][JavaScript]jQueryのコンパイル時にエラー

npm経由でjQueryをインストールした場合、tscコマンド打つと、

../node_modules/@types/jquery/index.d.ts(41,63): error TS2304: Cannot find name 'Iterable'.
というコンパイルエラーが発生しました。

で、調査したところ、tsconfig.jsonに、
{
    "compilerOptions": {
          "lib":["es2015", "es2015.iterable", "dom"]
    }
}
という形で、libを入れたらコンパイルエラーが通りしました。

2017/06/19

[TypeScript][JavaScript]tscコマンドでtscconfig.jsonを読み込ませる方法

どうやらTypeScript 2.0からtscコマンドでtscconfig.jsonを読み込ませることができるみたいなのですが、何故か読み込まれない。

原因を調べたところ、–projectオプションを使えばいけるみたいなので、

tsc -w --project path_to_tscconfig_json/tscconfig.json
と打ち込めばいいみたいで、実際にそうしたらきちんと読み込んでくれた。

参考
TypeScript tsconfig.json について

2016/10/29

[typescript][JavaScript]changedTouchesプロパティーエラーになってしまう件

下記のようなソースを組んでビルドするとエラーが発生した。

$('.hoge').on('touchstart touchmove ',(e)=>{
  let changedTouches = e.originalEvent.changedTouches[0];
});
Does TypeScript version 1.7.6 support dts lib for touchevents?
で調査すると下記のように組めばいいことがわかりました。
$('.hoge').on('touchstart touchmove ',(e)=>{
  let original = e.originalEvent;
  if(original instanceof TouchEvent){
    let changedTouches = original.changedTouches[0];
  }
});
これでビルドした結果、確かにエラーが取れました。

2016/08/29

[TypeScript]Eventオブジェクトのプロパティーについて

TypeScriptを使って下のようなソースを組んだらエラーに。

$(window).on('pageshow',(e)=>{
  let originalEvent = e.originalEvent;
  if(originalEvent.persisted){
  
  }
});
エラーの内容は、
Property 'persisted' does not exist on type 'Event'.
って話なんだけど、
interface Event {
  persisted:boolean;
}
を設定したらエラーが取れました。

って、このエラーの解消方法はこれでよかったのだろうか?

2016/08/23

[typescript]unistall

バージョンアップをしたくて、いったん、アンインストール必要がでてきたので、やり方を調べたら、どうやら

npm uninstall -g typescript
でおkみたい。

2016/08/22

[typescript][webpack]typescriptで定義したclassをamdでエクスポート

タイトルが長くなってしまったのだが、typescriptで定義したclassをamdでエクスポートするにはどうすればいいのだろうか?

まず下のようにclassを定義する。

//foo.js
define(['jquery'],function($){
  class Hoge {
    constructor(opts?:any) {
    }
  }
  return Hoge;
});
で、これをrequireすればおk。
var hoge = require('foo');
new hoge;
こうすればできた。

2016/08/21

[typescript]グローバル変数をtsファイル内で使う その2

前回、グローバル変数をtsファイル内で使う方法について書きましたが、windowオブジェクトのプロパティーとしてグローバル変数を宣言したい場合はどうすればいいのだろうか?

ずばり

interface Window {
  hoge: {}; 
}
という風にすればおk

2016/08/20

[typscript]dictionaryを定義

typscriptでdictionary型ないしjson型を定義するにはどうすればいいのだろうか?

Declare and initialize a Dictionary in Typescript
によると、

interface hoge{
  foo:string;
}
という形でinterfaceを宣言すればおkみたいです。

2016/08/19

[typescript]グローバル変数をtsファイル内で使う

typescriptファイル内に定義されていないグローバル変数を使いたい場合はどうすればいいのだろうか?

Call a Global Variable inside Typescript module
を参考にすると以下のように書けばおk

declare var hoge: any;

2016/08/18

[typescript]jQueryPluginを使う

少し前にtypescriptでjQueryを使う方法について書きました。

で、これをベースにjQueryPluginを使いたい場合にはどうすればいいのだろうか?

how to import jQuery plugin into Typescript file?
で確認すると、

interface JQuery {
    slider: Function;
}
でいけるみたいなのですが、型がFunctionだと気持ち悪いので、
interface JQuery {
    slider: (args?:any)=>void;
}
でも大丈夫でした。

ただ、少し気になったのは
///<reference path="../_dt/jquery.d.ts" />
の内部に、
interface JQuery {
}
の記述があり、これを上書きしないのかなーっと。

2016/08/17

[typescript][webpack]require関数を使う

typescriptでwebpackのrequire関数を使うにはどうすればいいのだろうか?

typescript getting error TS2304: cannot find name ' require'
によると、

declare var require: any;
でいけるみたいで、確かにそのように書いたらビルドが通った。

2016/08/16

[typescript]関数を型にする

typescriptでは関数を型にすることができるみたいです。

Functions
で確認すると以下のような形でおkみたい。

var hoge:(args?:any)=>void = function(){

};
arg?とすることで任意の引数を受け取ることができます。

引数の型がanyなのがちょっと気持ち悪いけど。

2016/08/08

[typescript]関数(メソッド)の引数を必須から任意にする

関数 or メソッドの引数を必須から任意にするにはどうすればいいのだろうか?

_hoge(prms:{a:string,b?:number}) {
  console.log(prms.a)
}
という形で変数名:{変数名?:type...}と「?」を書けばおkみたい。

2016/08/07

[typescript]関数(メソッド)の引数にオブジェクトを設定する

関数 or メソッドの引数をオブジェクトにするにはどうすればいいのだろうか?

_hoge(prms:{a:string,b:number,c:number}) {
  console.log(prms.a)
}
という形で変数名:{変数名:type...}と書けばおkみたい。

2016/08/06

[typescript]thisについてarrow syntax

typescriptでjQueryのonメソッドを使って下のようにソースを組みたい場合があります。

var _this: any = this;
$('._foo').on('click',function(e){
  _this.func();
});
で、これでもいいんだけど、もっとスマートにできないだろうか?

マニュアルを読むとarrow syntaxというのがあって、下のようにすればいいみたい。
$('._foo').on('click',(e) => {
  this.func();
});
で、こう書くと、thisは、もう一個、上側の変数を表すことになる。
(ちょっと正確性が欠けた表現だが。)
var img: any = new Image();
img.onload = () => {
  this._func();
};

2016/08/05

[typescript]boolean型

typescriptでbool型は、どう型定義すればいいのだろうか?

_hoge: boolean = false;
という形で、booleanでおk

2016/08/01

[typescript]date型の変数宣言

date型の変数宣言を行いたい場合、どうすればいいのだろうか?

Date variable works, but functions on it do not
によると、

var now:Date = new Date();
という形でおkみたい。

参考
Interfaces

2016/07/28

[typescript]定数の設定について

typescriptでclassを使っていると時に、インスタンス変数を定数にしたい場合があります。

そんな時、

class Foo {
  private const _$hoge: JQuery = $('.hoge');
}
ってやるとエラーになる。さらに、
class Foo {
  const private _$hoge: JQuery = $('.hoge');
}
ってやってもエラーになった。

TypeScriptの文字列定数の管理方法
で確認するとそもそもできないみたい。

2016/07/25

[typescript]変数の値設定について

typescriptでインスタンス変数に値を設定する時、下のように実装していました。

class Hoge {
  private _$foo: JQuery;
  constructor() {
    this._$foo = $('._foo');
  }
}
これ、実は、下のように書くことも可能らしい。
class Hoge {
  private _$foo: JQuery = $('._foo');
  constructor() {
  }
}
こっちの方が可読性があがっていいのかなと。

2016/07/21

[typescript]privateメソッドを宣言

classでメソッドを宣言した場合、デフォルトだとパブリックメソッドになってしまい外部からでもアクセスできてしまう。

そこで、プライベートメソッドに変更して、外部からアクセスできないようにするにはどうすればいいのだろうか?

class Hoge {
  private $foo(){
  
  }
}
という形で、メソッドの頭にprivateをつければおk