2017-02-14 6 views
1

からタイプを生成次のようにモジュールを考えると、モジュールの独自のエクスポートされたキー

import * as stuff from "./stuff"; 
type StuffKeys = keyof typeof stuff; // "a" | "b" 

をしかし、私は、生成したいとエクスポートモジュール内ののこのタイプはです。何かのように:

export type MyKeys = keyof typeof this; 

しかし、それは動作しません。

これを行う方法はありますか?

答えて

2

export type MyKeys...の行はキーの種類自体に含まれる必要があるため、あなたがやろうとしていることは可能であるとは信じられませんでした。

しかし、驚くべきことに、モジュールを自分自身にインポートしてそこからキーをエクスポートするだけです。

main.ts

export const a : string = 'a'; 
export const b : string = 'b'; 

import * as main from './main' 
export type MyKeys = keyof typeof main; 

test.ts

import {MyKeys} from './main'; 

const a : MyKeys = 'a'; 
const b : MyKeys = 'c'; // TS2322: Type '"c"' is not assignable to type '"a" | "b"'. 
関連する問題