草庐IT

【TypeScript】TS中type和interface在类型声明时的区别

全部标签

javascript - 使用 TypeScript 函数返回 JSON 对象

我最近发现了TypeScript,并尝试将我现有的JavaScript代码转换为TypeScript。我有一个函数可以从字符串(data)中检索信息,将其放入JSON对象(json)中并返回它。但是,当使用TypeScript且未指定返回类型时,我在Eclipse中收到以下错误:Nobestcommontypeexistsamongreturnexpressions当我添加any返回类型时它就消失了,但我认为这不是一个好的解决方案(太通用)。而且我找不到“json”或“object”类型。我的问题是:我应该使用什么返回类型?函数如下:functionformaterDonnees(da

javascript - 窗口对象的正确流类型是什么?

我需要从我的应用程序的根部传入窗口,我对应该使用哪种流类型感到困惑。我试过了exportdefaultclassListAttributeextendsComponent{props:{frameWindow:mixed}componentDidMount(){this.props.frameWindow.addEventListener('click',this.closeList,false)}....}这让我调用方法addEventListener。无法在混合时调用方法,我尝试了改进,但没有成功。我尝试查看此处,但找不到与bom本身相关的任何内容。https://www.salt

javascript - gulp typescript 时出现 TypeError

执行Typescript转译时出现以下错误:TypeError:file.isSymbolicisnotafunctionatDestroyableTransform.normalize[as_transform](D:\project\node_modules\vinyl-fs\lib\dest\prepare.js:31:15)atDestroyableTransform.Transform._read(D:\project\node_modules\vinyl-fs\node_modules\readable-stream\lib\_stream_transform.js:182

javascript - 如何在 Flow 类型中指定一个空对象?

假设我有一个可以是JavaScript错误对象或空对象的变量,我如何在Flow中指定空对象?我在不同地方尝试过的一种可能性(例如here)看起来像这样:consterr:Error|{||}={};但这会产生以下流程错误:1:constexact:{||}={};^Cannotassignobjectliteralto`exact`becauseinexactobjectliteral[1]isincompatiblewithexactobjecttype[2].References:1:constexact:{||}={};^[1]1:constexact:{||}={};^[2]参

javascript - 是否有任何 Typescript 表达式 `A` 使得 `A` 的真实性与 `!!A` 不同?

在Javascript中,几乎所有表达式(所有表达式?)都有一个“真实性”值。如果您将表达式放在需要bool值的语句中,它将计算为bool值等价物。例如:leta='foo'if(a){console.log('aistruthy!');}//Willprint'aistruthy!'.在某些工作场所,通常会通过两次取反将这种情况下的表达式强制转换为实际的bool值:leta='foo'if(!!a){console.log('aistruthy!');}//Willprint'aistruthy!'.我的问题:这仅仅是风格问题吗?是否纯粹是为了与阅读代码的人交流,我们真正认识到a不是

javascript - 仅使用没有名称的方法签名声明类的接口(interface)

假设我有一个包含许多方法的类,但我确信它们的签名匹配。有没有可能只描述这个类的接口(interface),而不描述里面这个类的具体方法呢?喜欢这里:interfaceIController{(input:string):number//anymethodwithoutreferencetoitsname}classControllerimplementsIController{method1(input:string):number{...dosomething}method2(input:string):number{...dosomething}...}还是不可能的?

javascript - TypeScript 有 NaN 类型吗?

这个问题在这里已经有了答案:Integer(literal)uniontype,withNaNasvalidreturnvalue(2个答案)关闭4年前。TypeScript是否有我可以为变量声明的NaN类型?例如,如果我要创建一个这样的变量:constnumber:number=parseInt('123',10);我可以把它改得更准确吗,像这样:constnumber:number|NaN=parseInt('123',10);基本上我想知道我是否可以将变量声明为NaN类型(不是未定义或null)。上面的代码片段在TypeScript中不起作用,我无法在TypeScript指南的基

javascript - 声明变量和定义变量有区别吗

我尝试在控制台中一行一行地编写以下行letx=y//throwserror"UncaughtReferenceError:yisnotdefined"console.log(x)//throwserror"ReferenceError:xisnotdefined"letx=3;//giveserror"UncaughtSyntaxError:Identifier'x'hasalreadybeendeclared"x=3//ReferenceError:xisnotdefined现在的问题是,一个变量怎么能同时未定义和已声明。两者有什么区别吗。 最佳答案

javascript - Typescript 3 Angular 7 StopPropagation 和 PreventDefault 不起作用

我在一个div中有一个文本输入。单击输入应将其设置为焦点并停止div单击事件的冒泡。我在文本输入事件上尝试了stopPropagation和preventDefault但无济于事。控制台日志显示无论如何,divclick仍然执行。如何停止div点击事件的执行?//html//component@ViewChild('inputBox')inputBox:ElementRef;divClick(){console.log('clickinsidediv');}fireEvent(e){this.inputBox.nativeElement.focus();e.stopPropagatio

javascript - 为什么在确定类型相等时使用 ===?

似乎尽可能首选严格相等运算符-我将我的代码放在JSLint中并获得了以下反馈。代码:functionlog(){console.log(arguments.length==1?arguments[0]:arguments);}来自JSLint的反馈:Problematline2character34:Expected'==='andinsteadsaw'=='.我很想知道===比==有什么优势。基本上,.length返回一个Number,1也是一个Number。你可以100%确定,所以===只是一个多余的额外标记。此外,在您知道类型始终相同的情况下检查类型也没有性能优势。那么这里使用=