2014-02-19 85 views
0

如何在下一个代码块(typeOf,instanceOf,...)中使用类型参数T. T是'组'。这可能是因为JavaScript没有类型。感谢名单。TypeScript使用类型参数

export class LocalStorage<T> implements ILocalStorage<T> { 
    constructor() {} 

    getKey(): string { 
     if (T is 'Group') 
      return "Groups"; 
    } 
} 

回答

1

对于泛型中的TypeArguments,你不能这样做(就像你已经意识到的那样)。

class Group{} 


function getKey(item:any): string { 
    if (item instanceof Group) 
     return "Groups"; 
    else 
     return 'invalid'; 
} 


console.log(getKey(new Group())); 

没有打字稿魔术在上面的代码:但是,如果你使用的打字稿类,你可以做运行时检查。我们只是利用javascript instanceof运算符:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof

0

Thanx basarat。你指给我正确的方向。我的代码现在看起来更好。

export class LocalStorage<T> implements ILocalStorage<T> { 
    private instance: any; 
    constructor(instance: any) { 
     this.instance = new instance(null); 
    } 

    getKey(): string { 
     if (this.instance instanceof g.Group) 
      return "Groups"; 
     else 
      return "Invalid"; 
    } 
} 

//using 
var groupLocalStorage = new ls.LocalStorage<g.Group>(g.Group);