sou's blog

落ち着いた華やかさがあり、上品に明るく陽気なさまを表す。

URLを構築する便利な関数

はじめに

この記事はTypeScript Advent Calendar 2017の1日目の記事です。

TypeScriptに限った話ではないですが、TypeScriptで書いていたものがあったので公開しておきます。

URL関係

urlとパラメータをくっつける処理いつも同じ関数使いまわしています。 同様にurlからパラメータを取ってくるのも同じ関数使いまわしています。

export class UrlUtils {
    public static build(url: string, params: { [key: string]: any; } = {}): string {
        const keys = Object.keys(params);
        const queryString = params
            ? keys.map((key: string) => [key, params[key]].map(encodeURIComponent).join('=')).join('&')
            : '';
        return 0 < queryString.length
            ? url + (~url.indexOf('?') ? '&' : '?') + queryString
            : url;
    }

    public static getParams<T>(): T {
        const params: T = {} as T;
        if (location.search.length) {
            const pair = location.search.substring(1).split('&');
            pair.forEach(x => {
                const kv = x.split('=');
                params[kv[0]] = kv[1];
            });
        }
        Object.keys(<T>{}).forEach(x => {
            console.log(x);
        });
        return params as T;
    }
}