相关疑难解决方法(0)

无法调用类型缺少调用签名的表达式

我有苹果和梨 - 都有一个isDecayed属性:

interface Apple {
    color: string;
    isDecayed: boolean;
}

interface Pear {
    weight: number;
    isDecayed: boolean;
}
Run Code Online (Sandbox Code Playgroud)

这两种类型都可以在我的水果篮中(多次):

interface FruitBasket {
   apples: Apple[];
   pears: Pear[];
}
Run Code Online (Sandbox Code Playgroud)

我们假设现在我的篮子是空的:

const fruitBasket: FruitBasket = { apples: [], pears: [] };
Run Code Online (Sandbox Code Playgroud)

现在我们随机抽出一种:

const key: keyof FruitBasket = Math.random() > 0.5 ? 'apples': 'pears'; 
const fruits = fruitBasket[key];
Run Code Online (Sandbox Code Playgroud)

当然,没有人喜欢朽烂的水果,所以我们只选择新鲜水果:

const freshFruits = fruits.filter((fruit) => !fruit.isDecayed);
Run Code Online (Sandbox Code Playgroud)

不幸的是,Typescript告诉我:

无法调用类型缺少调用签名的表达式.输入'((callbackfn :(值:Apple,索引:数字,数组:Apple [])=> any,thisArg?:any)=> Apple [])| ......'没有兼容的呼号.

这里有什么问题 - 只是因为Typescript不喜欢新鲜水果,或者这是一个Typescript错误?

您可以在官方的Typescript Repl中自己尝试一下.

javascript types typescript

66
推荐指数
2
解决办法
9万
查看次数

无法调用类型缺少呼叫签名,地图的表达式

此代码有效:

class A {}
class B {}
class C {}

const classCFromAOrB = (element: A | B): C => new C()

const a: A[] | B[] = [new A()]

const c: C[] = a.map(element => classCFromAOrB(element))
Run Code Online (Sandbox Code Playgroud)

这段代码没有:

import { classA } from '../some'
import { classB } from './../some'

interface interfaceC {}

const render = (element: classA | classB): interfaceC => {
    return {}
}

interface ResultsScreenProps {
    resultsScreenPresented: boolean
    answers: classA[] | classB[]
    dismiss: SimpleFunc
}

const Screen: React.SFC<ResultsScreenProps> …
Run Code Online (Sandbox Code Playgroud)

typescript

1
推荐指数
1
解决办法
3589
查看次数

标签 统计

typescript ×2

javascript ×1

types ×1