Closed5

openapi-typescript を分解する

para7para7

自作型付きクライアントを得るまでの道のり記録

para7para7

とりあえずパメラータとレスポンスは以下で取れそう

type param = paths['/internal/v1/users']['get']['parameters'];
type res = paths['/internal/v1/users']['get']['responses']['200']['content']['application/json'];
para7para7

呼び出し側から指定するパラメータは取れた

ただこうしちゃうとMethodTypeから先がうまく取れない気がする

/**
 * URL型
 */
type Path = keyof paths;

/**
 * get, post 等
 */
type MethodType = keyof paths[keyof paths];
para7para7

形としてはこんな感じになるはず

get は .get とかメソッドチェーンで指定したいところではあるけどこれでも問題なし

const request = async (path: Path, method: MethodType) => {
	return { path, method };
};

const result = request('/internal/v1/users', 'get');

console.log(result)

第二パラメータが全く絞り込めてないので全部でてしまっている。path の型で絞る必要がある

para7para7

パスパラメータで複雑性がやばくなってきたので断念

このスクラップは2024/12/10にクローズされました