Ts报错:Type ‘Function | undefined‘ is not assignable to type ‘Function‘;Cannot invoke an object
最新推荐文章于 2024-01-12 06:20:30 发布
最新推荐文章于 2024-01-12 06:20:30 发布
阅读量
4.2k
报错
Type ‘Function | undefined’ is not assignable to type ‘Function’.
Type ‘undefined’ is not assignable to type ‘Function’.
意思是:
类型’Function | undefined’不能赋值给类型’Function’。
类型’undefined’不能赋值给类型’Function’。
解决:将类型定义为
Function | undefined
const myFun: Function |undefined = ...
使用该函数时报错:
Cannot invoke an object which is possibly ‘undefined’.
意思是:
不能调用可能是“未定义”的对象。
使用typescript类型断言
类型断言(Type Assertion): 可以用来手动指定一个值的类型
语法:
值 as 类型 tsx中只能用这种方式
(myFunas Function)()
ts-simple-type
这是什么?
目前,Typescript API的类型检查器未提供检查可分配性和构建类型的方法。 请参阅Typescript github存储库上的问题和 。
为了填补在讨论此问题时的空白,该库旨在提供用于处理Typescript中的类型的最基本的辅助函数。
此外,该库可以帮助您构造可以序列化和易于分析的类型(称为SimpleType )。
该库有35000多个测试,可将结果与实际的Typescript诊断进行比较(请参阅 )。
npm install ts-simple-type
该API非常简单。 例如,如果你想检查是否打字稿类型typeB是分配给typeA ,您可以使用下面的函数。
import { isAssignableToType } from "ts-simple-type" ;
const isAssignable =
noUncheckedIndexedAccess支持
noUncheckedIndexedAccess编译器标志是史诗般的,但仍有改进的空间。 例如,以下问题:
if ( foo . length > 2 ) {
const bar : string = foo [ 1 ] //error: string | undefined not assignable to string
可以用lengthGreaterThan解决
import { lengthGreaterThan } from '@detachhead/ts-helpers'
if ( lengthGreaterThan ( foo , 2 ) ) {
const bar : string = foo [ 1 ] //no error, foo i
不应该使用Function作为类型。它表示任何函数。通常,您希望更具体-例如指定参数的数量或函数返回的内容。如果您确实希望表示一个可以接受任意数量的参数并返回任何类型的函数,请使用。
1. 简介
TypeScript具有类型系统,且是JavaScript的超集。 它可以编译成普通的JavaScript代码。 TypeScript支持任意浏览器,任意环境,任意系统并且是开源的。
TypeScript 通过类型注解对变量类型进行约束。
TypeScript 是编译期行为,它不引入额外开销,同时没有改变运行时。
TypeScript 的类型系统是结构化的,即Structral Subtyping,这意味着是对值的约束,而非标识符。即在TS中,只要两个对象的结构、
【代码】不能调用可能是“未定不能调用可能是“未定义”的对象。ts(2722) Cannot invoke an object which is possibly 'undefined'.义”的对象。
iOS开发中我们会遇到各种警告,包括第三方不再支持更新导致的警告,苹果一些过时方法的警告,其中尤其是ASIHttpRequest的不支持更新导致有很多的警告,所以我在这里做了罗列
Semantic Warnings
WarningMessage
-WCFString-literal
input conversion stopped due to an inpu...
graphRef.current?.zoom(0.9)
graphRef.current可能是undefind,用可选链调用zoom方法,结果ts报错TS2722: Cannot invoke an object which is possibly 'undefined'.,百度了半天也没找到答案,在此记录一下问题解决方法。
graphRef.current?.zoom!(0.9)
zoom方法后面加上!就行了
对于参数类型一致的情况,可以采用Initializer_list的方式来实现,示例代码如下:
void print(std::initializer_list<int> vals)
for (auto it=vals.begin(); it!=vals.end(); ++it)
std::cout << *it &
要解决以上问题,我们可以加个条件判断:
此外, 可以使用TypeScript2.0中提供的非空断言操作符()。
语法非空断言操作符操作符 可以用于断言操作对象是非 null 和非 undefined 类型。即: 将从 值域中排除 和 。所以以上代码可以改造为:
看下编译结果:
可以看出非空断言操作符从编译生成的JS代码中移除掉了, 如果handler函数调用时传入或时,会出现以下运行时错误:
所以在实际使用时需要注意。
ts函数,Ts定义函数方法,TS快速入门函数,Ts的函数,TS 定义函参剩余参数示例教程,ts如何设置可选参数,ts怎么设置函数的返回类型,ts函数重载详细教程,ts函数相关操作,ts function函数,ts 函数语法,ts通俗易懂的详细教程示例,ts 默认参数 可选参数 剩余参数,TS之函数详解,带有剩余参数的Typescript 函数重载,ts剩余参数与数组类型,Typescript详解,TS(三)函数与变量声明,TS的函数,ts可选参数,参数默认值,剩余参数,函数重载,TypeScript基础讲解
在Ts中,我们可以通过type和interface的方式去定义类型,一般情况下通过interface接口的方法定义的类型都可以通过type去定义。注意type要添加等号。Interface定义类型不需要添加等号。
/ 但是必须含有类型为 string 的 cname 属性。//extends 还有一大用途就是用来判断一个类型是不是可以分配给另一个类型,这在写高级类型的时候非常有用,举个?// 这里 extends 对传入的参数作了一个限制,就是 entities 的每一项可以是一个对象,// 限制了传的 A B 包含 length 属性。// 指定参数的类型 比如 string numb。// 泛型约束 extends。// 条件类型与高阶类型。// 指定类型参数。// 尽可能少使用类型。
ERROR ERROR in /Users/***/Desktop/AJK/_fe/jiahzuang/node_modules/@antv/g2plot/lib/plots/pie/component/label/base-label.d.ts(17,18): ...