TypeScriptでlibraryに型をつける
無から外部型定義ファイルを作る
JSライブラリで、@types/hogeもなくて、全部自作する必要がある時
./types/hoge/index.d.tsを作ってそこに型定義を書く
hogeはライブラリの名前
code:ts
export function byteLength(encoded: string): number;
export function toByteArray(encoded: string): Uint8Array;
export function fromByteArray(bytes: Uint8Array): string;
code:tsconfig.json
{
"compilerOptions": {
"baseUrl": "./", // pathsを設定するために必要
"paths": {"hoge": "types/hoge"}, // hogeに対して、hogeの型定義ファイルの場所を指定 }
}
参考
requireで読み込むのもある
最後の手段ではある
読んでないがこの辺も参考になるかも
JSから型を生成するやつ
更新されていない
型定義ファイルがあるが、一部を拡張して使いたい
code:ts
import 'react-redux'
import { StoreState } from '../store'
// ______________________________________________________
//
declare module 'react-redux' {
interface DefaultRootState extends StoreState {}
}
decrare moduleを使ってinterfaceを拡張する
拡張元の型がtype宣言とかになっていると無理
ちゃんとinterfaceで定義されていればできる
参考
prototype上書き
code:ts
declare module 'config' {
interface IConfig {
getTyped: <T extends Paths<ConfigType>>(key: T) => PathValue<ConfigType, T>;
}
}
const prototype: config.IConfig = Object.getPrototypeOf(config);
prototype.getTyped = config.get;
関連