Typescript-如何使用运行时类型信息处理泛型数据类型

Typescript-如何使用运行时类型信息处理泛型数据类型,typescript,Typescript,我有一个泛型容器类型,它可能包含不同类型的数据。包含的数据类型在运行时受到包含字符串的“类型”字段的约束: type=“Numeric”|“Text”; 键入DataTypeFor= T扩展了“数字”?数 :T扩展“文本”?一串 :从不; 接口容器{ 类型:T; 数据:DataTypeFor; } 但是,当我们要在此接口的实例上操作时,编译器无法推断数据的正确类型字段: 功能操作(容器:容器){ 交换机(container.type){ 大小写“数字”: //错误 常数a:编号=contain

我有一个泛型容器类型,它可能包含不同类型的数据。包含的数据类型在运行时受到包含字符串的“类型”字段的约束:

type=“Numeric”|“Text”;
键入DataTypeFor=
T扩展了“数字”?数
:T扩展“文本”?一串
:从不;
接口容器{
类型:T;
数据:DataTypeFor;
}
但是,当我们要在此接口的实例上操作时,编译器无法推断
数据的正确类型
字段:

功能操作(容器:容器){
交换机(container.type){
大小写“数字”:
//错误
常数a:编号=container.data;
控制台日志(a);
打破
案例“文本”:
//错误
常量b:string=container.data;
控制台日志(b);
打破
案例“Fsasefsef”:
//这里没有错误!为什么?
打破
}
}
对于类型推断如何在这样的实例中使用泛型,我肯定有一个稍微错误的想法

有没有办法达到我想要的模式


您可以通过使用有区别的联合来实现此模式。

例如:

数字接口{
类型:“数字”
数据:数字
}
接口文本{
键入:“文本”
数据:字符串
}
类型容器=数字|文本
功能操作(容器:容器){
交换机(container.type){
大小写“数字”:
常数a:编号=container.data;
控制台日志(a);
打破
案例“文本”:
常量b:string=container.data;
控制台日志(b);
打破
}
}

是否必须将类型定义为字符串?@Diesel如果需要,我想我会接受枚举?