Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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