Javascript 如何在typescript中强制转换对象

Javascript 如何在typescript中强制转换对象,javascript,typescript,casting,Javascript,Typescript,Casting,从“/Enseignant”导入{Enseignant}; 从“/errors/alreadyexisterror”导入{alreadyexisterror}; 从“/Etudiant”导入{Etudiant}; 出口级利用者{ 私有_id:string; private\u first\u name:string; private\u last\u name:string; 私人电子邮件:字符串; 私有令牌:字符串; 私人静态用户:用户; 构造函数(id:string,first\u name

从“/Enseignant”导入{Enseignant};
从“/errors/alreadyexisterror”导入{alreadyexisterror};
从“/Etudiant”导入{Etudiant};
出口级利用者{
私有_id:string;
private\u first\u name:string;
private\u last\u name:string;
私人电子邮件:字符串;
私有令牌:字符串;
私人静态用户:用户;
构造函数(id:string,first\u name:string,last\u name:string,email:string,token:string){
这个。_id=id;
这个。_first_name=first_name;
这个._last_name=last_name;
这个。_email=电子邮件;
这个。_令牌=令牌;
}
public static connectUser(id:string,first_name:string,last_name:string,email:string,token:string):usilisateur{
如果(使用用户){
抛出新的已存在错误(“未利用我们的最新连接”);
}否则{
如果(电子邮件,包括(“教师”)){
usilizateur.user=new-Enseignant(id、名字、姓氏、电子邮件、令牌);//TODO-ajouter-tout-les-params-de-Enseignant
}否则{
//usilisateur.user=new Etudiant(id、名、姓、电子邮件、令牌、代码);//TODO ajouter tout les params de Etudiant
}
//用户=新用户(id、名、姓、电子邮件、令牌);
}
返回用户或用户;
}
public static getUsiateUrconnecte():Usiateur{
返回用户或用户;
}
公共getId(){
返回用户用户。\u id;
}
公共getFirstName(){
返回用户姓名;
}

};这取决于。如果您知道您的
usilizateur
实际上是一个
nseignant
,您可以使用:

let enseignant = utilisateur as Enseignant;
但是,值得注意的是,与Java不同,TypeScript不会在运行时验证此强制转换是否确实正确,因此,如果您的
usilizateur
恰好是
Etudiant
,那么您的代码将继续运行,并且只有在需要
Enseignant
特定的属性但未找到时才会失败

如果您不确定它是什么类型的
usilizateur
,您可以使用
instanceof
进行检查,因为
Enseignant
是一个类(如果它只是一个接口,您需要以不同的方式检查类型):


usilisateur.getUILISATURCONNECTER
是否返回
usilisateur
Enseignant
。这里不谈类型,它实际返回什么?还请减少您的代码示例。90%是不需要的,我们不需要看到您的实际代码,只是一个演示这个想法的最小版本。
if (utilisateur instanceof Enseignant) {
    let enseignant = utilisateur; // is known to be of type Enseignant
}