Guest User

Untitled

a guest
Jan 22nd, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.54 KB | None | 0 0
  1. interface Colours {
  2. red: string;
  3. green: string;
  4. blue: string[];
  5. }
  6.  
  7. let colours: Colours;
  8.  
  9. export type PropertyNamesOfType<T, TT> = { [K in keyof T]: T[K] extends TT ? K : never }[keyof T] & string;
  10.  
  11. function getColourStr(colour: PropertyNamesOfType<Colours, string>): string {
  12. return colours[colour] as string;
  13. }
  14.  
  15. function getColourArr(colour: PropertyNamesOfType<Colours, string[]>): string[] {
  16. return colours[colour] as string[];
  17. }
  18.  
  19. // Success
  20. getColourStr('red');
  21. getColourArr('blue');
  22.  
  23. // Error
  24. getColourStr('blue');
  25. getColourArr('red');
Add Comment
Please, Sign In to add comment