Typescript - 使用类的字符串名称访问类的属性

Emi*_*Emi 2 typescript ionic2

我正在上这堂课:

import { SoapNotePage } from "../pages/forms/soap-note/soap-note";

export class FormMapper {
    public static SOAP_NOTE = SoapNotePage;
}
Run Code Online (Sandbox Code Playgroud)

访问该属性很容易,请参见以下示例:

open(item){
    if(item.id == 1){
       this.navCtrl.push(FormMapper.SOAP_NOTE, { patientId: 509070, formId: 75598 });
    }
}
Run Code Online (Sandbox Code Playgroud)

但我想要的是通过字符串名称动态地访问“SOAP_NOTE”属性,例如如下所示:

this.navCtrl.push(FormMapper['SOAP_NOTE'], { patientId: 509070, formId: 75598 });
Run Code Online (Sandbox Code Playgroud)

我问这个问题的原因是函数“open(item)”的“item”参数可能包含 FormMapper 类的属性名称。

有什么办法可以做到这一点吗?

Nit*_*mer 5

你可以这样做:

function open(item: keyof typeof FormMapper) {
    console.log(FormMapper[item]);  
}
Run Code Online (Sandbox Code Playgroud)

这样你就可以将item值限制为FormMapper类的键,编译器就不会抱怨。