`const data: AddDataType`定义`data`的类型为`AddDataType`,无论你用它的哪个子类型给`data`赋值,`data`本身的类型都是`AddDataType`,ts只检查值是否兼容`AddDataType`,不会根据值的类型来收缩`data`的类型(可以把const换成let思考一下) 一定要让data拿到子类型的话可以用这种方式 function createAddData(t: T) { return { component: t } as AddDataType; } const data = createAddData('AlarmTips');