Javascript Typescript-generic:Property';通过';不存在于类型';T';。ts(2339) //回调函数 const fetchData=(userId:number,cb:any)=>{ 设置超时(()=>{ 常量伪造数据={ 姓名:“鲍勃”, id:userId, 通行证:1234 }; cb(伪造数据); }, 500) } 界面Idata{ 名称:string, 身份证号码 } const afterFetchData=(数据:T)=>{ log(“您的数据是”,data.pass) }
如何在Javascript Typescript-generic:Property';通过';不存在于类型';T';。ts(2339) //回调函数 const fetchData=(userId:number,cb:any)=>{ 设置超时(()=>{ 常量伪造数据={ 姓名:“鲍勃”, id:userId, 通行证:1234 }; cb(伪造数据); }, 500) } 界面Idata{ 名称:string, 身份证号码 } const afterFetchData=(数据:T)=>{ log(“您的数据是”,data.pass) },javascript,typescript,Javascript,Typescript,如何在afterFetchData函数中不使用any而将任何类型的值放入fakeData并接受它 现在我有一个错误:属性“pass”在类型“T”上不存在。ts(2339)如果您知道其中总会有一些属性,如id和name,但您不确定pass,您可以执行以下操作: // callback functions const fetchData = (userId:number, cb:any) => { setTimeout(() => { const fakeData
afterFetchData
函数中不使用any
而将任何类型的值放入fakeData
并接受它
现在我有一个错误:属性“pass”在类型“T”上不存在。ts(2339)如果您知道其中总会有一些属性,如
id
和name
,但您不确定pass
,您可以执行以下操作:
// callback functions
const fetchData = (userId:number, cb:any) => {
setTimeout(() => {
const fakeData = {
name: "bob",
id: userId,
pass: 1234
};
cb(fakeData);
}, 500)
}
interface Idata {
name: string,
id: number
}
const afterFetchData = <T extends Idata>(data: T) => {
console.log("your data is", data.pass)
}
否则,您应该保持伪造数据的非类型化或使用
any
类型如果您知道其中总会有一些属性,如id
和name
,但您不确定pass
,则可以执行以下操作:
// callback functions
const fetchData = (userId:number, cb:any) => {
setTimeout(() => {
const fakeData = {
name: "bob",
id: userId,
pass: 1234
};
cb(fakeData);
}, 500)
}
interface Idata {
name: string,
id: number
}
const afterFetchData = <T extends Idata>(data: T) => {
console.log("your data is", data.pass)
}
否则,您应该保持伪造数据的非类型化,或者使用
any
类型T扩展Idata
,因此它只需要有名称和id。@jornsharpe您能给我一个正确方法的示例吗?您的Idata
接口不包括pass
属性。实际上,因为没有更多的上下文,不清楚正确的方法是什么。也许你应该在界面上添加pass。也许afterFetchData应该接受任何。在尝试记录之前,它可能应该检查pass是否已定义。因此,您需要告诉我们为什么要尝试访问不存在的t extensed Idata
属性,所以它只需要有名称和id。@jornsharpe你能给我一个正确方法的例子吗?你的Idata
接口不包括pass
属性。不完全是,因为没有更多上下文,不清楚正确的方法可能是什么。也许你应该在界面上添加pass。也许afterFetchData应该接受任何。也许它应该在尝试记录它之前检查是否定义了pass。因此,您需要告诉我们为什么您试图访问不存在的pass
属性Thank@MajiD,但我仍然得到相同的错误元素隐式地具有“any”类型,因为类型为“pass”的表达式不能用于索引类型“Idata”。属性“pass”在类型“Idata”上不存在。ts(7053)
如果您对服务器响应一无所知,那么我认为您应该使用any
谢谢@MajiD,但是我仍然得到了相同的错误元素隐式具有“any”类型,因为类型“pass”的表达式不能用于索引类型“Idata”。属性“pass”在类型“Idata”上不存在。ts(7053)
如果您对服务器响应一无所知,那么我认为您应该使用any