Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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 元组类型的Probem_Javascript_Arrays_Typescript_Tuples - Fatal编程技术网

Javascript 元组类型的Probem

Javascript 元组类型的Probem,javascript,arrays,typescript,tuples,Javascript,Arrays,Typescript,Tuples,最近,我试着跟随亚当·弗里曼(Adam Freeman)的前角理论,我遇到了一个在别处找不到的问题。我有一个密码: canActivate(route:ActivatedRouteSnapshot,state:RouterStateSnapshot) :Promise<boolean>|boolean{ if (route.params['mode']=='create') { return new Promise<boolean>((resolv

最近,我试着跟随亚当·弗里曼(Adam Freeman)的前角理论,我遇到了一个在别处找不到的问题。我有一个密码:

canActivate(route:ActivatedRouteSnapshot,state:RouterStateSnapshot)
:Promise<boolean>|boolean{
    if (route.params['mode']=='create') {
        return new Promise<boolean>((resolve, reject) =>  {
            let responses:[[string, (string) => void]] = [
            ['Tak', () => {resolve(true)}],
            ['Nie', () => {
                this.router.navigateByUrl(this.router.url);
                resolve(false);
                }]
            ];
            this.messages.reportMessage(new Message('Akceptujesz warunki?', false, responses));

        });
    }
    else{
        return true;
    }
}

看起来一切正常,但我收到一个错误:

error TS2322: Type '[[string, () => void], [string, () => void]]' is not assignable to type '[[string, (string: any) => void]]'.
Types of property 'length' are incompatible.
Type '2' is not assignable to type '1'.
这很奇怪,因为我的代码和书中的代码一样。我知道这是件小事,但我真的不知道该怎么弄清楚。有人能帮忙吗

属性“length”的类型不兼容。
类型“2”不可分配给类型“1”

声明正好一个元组的数组类型。如果您尝试使用除一个元素以外的任何其他元素初始化它,它将出错

您需要将您的
回复
声明更改为

let responses: [string, (string) => void][]

let响应:数组无效]>

我已经尝试过这个解决方案,即使有了这个澄清,问题仍然存在。它与“数组”的大小有关,因为响应中有两项。请尝试添加
让响应:数组无效]>
[string,()=>void][]
作为数组类型。您当前的类型声明意味着数组只有一个
tuple
ReportMessage函数没有问题,但是变量的声明有问题。我上面的评论只针对
响应
声明,而不是
ReportMessage
函数。@ethane如果将类型更改为“[string,(string)=>void][]”代码编译得很好
let responses:[[string, (string) => void]]
let responses: [string, (string) => void][]
let responses: Array<[string, (string) => void]>