TypeScript で便利だった構文

TypeScript を書いていると、思わぬところで型周りであったりエラーになったりする。
JavaScript ならば特に気にもしないポイントで。

というわけで、見つけた便利な書き方をメモしておきたい。

随時更新していく。

オブジェクトのキーでループ

1
2
3
4
5
6
const params = {a:"AA",b:"BB"};

(Object.keys(params) as (keyof typeof params)[])
.forEach((key) => console.log(`${key}=${params[key]}`))
// => a=AA
// b=BB

任意の文字列キーを持つ型

1
2
3
4
5
6
7
export interface ObjectOfStringKey {
[key: string]: string;
}

export interface ObjectOfStringKeyAnyValue {
[key: string]: any;
}

任意のプロパティを除外する

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
export const selectObject = <T>(
srcObject: T,
requestProperties: (keyof T)[],
): Omit<T, keyof T> => {
let result: Omit<T, keyof T> = Object.assign({}, srcObject);
const removeProperties = <(keyof T)[]> (
Object.keys(srcObject).filter(
(key: string) => !requestProperties.includes(<keyof T> key),
)
);

removeProperties.forEach((key: keyof T) => {
const { [key]: _, ...tmp } = result;
result = tmp;
});

return result;
};