TypeScript非常新,并且一直在用VSCode编写它。VSCode为我突出了类型的“错误”,我开始严重依赖这些类型来捕捉我的错误。我不确定这是否是TSLint的一部分,也不确定它是如何实现的。
然而,有一种“错误”,我发现它没有抓住。我希望我的类有一个属性,这个属性是要在某个时候调用的处理程序函数。将在此处理程序中传递一个不同的对象,以便稍后调用。
我正在键入此属性以具有特定的调用签名和返回类型。如果我试图将此属性设置为具有不同调用签名的函数,则VSCode会突出此错误。但是,如果我尝试将此属性设置为具有错误返回类型的函数,则不会捕获该属性。
最好用一个最小的例子来演示:
class S
对于我正在进行的半教育侧项目,我有一个TypeScript interface,它在实现它的任何对象上公开一个id变量。在这个应用程序中,存在这些Array<>对象是相当普遍的。
由于这个应用程序不使用数据库,所以我要做的是实现一个自动增量器,用于跟踪这些IIdable的列表。
Array<MyProject.Models.IIdable>.prototype.getNextId = () => {
let biggestId: number = 0;
for (let current of this) {
if (current.
我试图保留回调参数的类型信息,其中回调是泛型的:
function Foo<Template>(argument: Template) {
// Do something with argument
}
function Bar(callback: Function) {
callback('something')
}
let x = Bar( Foo<String> )
这看起来不像是有效的typescript语法。有办法做到这一点吗?
我正在尝试学习TypeScript使用Barasat的深度潜水。
我在Arrow函数和继承中看到了下面的代码。请帮助我理解第二个:string在"(b:string):string“一行中的意义。
class Adder {
constructor(public a: number) {}
// This function is now safe to pass around
add = (b: string): string => {
return this.a + b;
}
}
这里有一个问题和答案,它有助于提供一种简洁的方法来定义命名箭头函数的形状,但不涉及匿名内联函数:Specify return type in TypeScript arrow function 我想使用一个简单的内联匿名箭头函数将一个对象类型映射到另一个对象类型: type MyType = {
foo: string
};
type OtherType = {
bar: string
};
const myTypeArr: MyType[] = [{foo: 'abc'}, {foo: 'qwe'}];
// note the anony
我只是在想,在javascript或typescript中,是否有一种方法可以在元素映射本身中编写fat箭头函数的条件?
当前代码
functionName(data => {
if(data){
}
});
在data到达if语句之前是否有检查它的语法?
有点像
functionName(data? => {
if(data){ // This code is then not needed
}
});
或
functionName(!data => {
if(data){ // This code is then not needed
}
我正在尝试创建一个函数,它接受一个类作为参数(不是类实例,而是类本身),并返回另一个类,它扩展了参数中给出的类。
我尝试按如下方式定义typescript函数,但得到以下错误:Type 'typeof (Anonymous class)' is not assignable to type 'T'
function extendClass<T>(base: T): T {
return class extends base{
};
}
上面这个函数的用法示例:
class A {
}
const B = extendClass(A
在我的代码上运行tslint,我得到这个错误:
expected variableDeclarator: 'getCode' to have a typedef.
对于TypeScript文件:
export var getCode = function (param: string): string {
// ...
};
我如何改进这一点,使我看不到tslint错误?
这个问题是关于趣味()和lambda块定义和作用域的。
我试着用两种方式定义这些表达式。以下是我尝试过的:
val myFunction = fun(){
println("i am in a function")
}
//but i also tried doing this:
val myFunction = {
println("i am in a lambda")
}
我的问题是,我不知道它们是否是等同的和相同的东西?
我想了解为什么TypeScript不能推断以下函数的返回类型(虽然它能够在if-else语句中进行区分):
function calc (arg: number|string) {
if (typeof arg === 'number') {
// here typescript knows arg is number type
return arg
} else if (typeof arg === 'string') {
// here typescript knows arg is string type
retu
在下面的代码中,我尝试创建一个访问给定输入的data属性的类型安全函数。我的目标是避免在任何地方重复对data的访问,为此,我希望将样板保持在最小(例如,我希望TypeScript推断尽可能多的类型)。
interface User {
name: string
}
interface HttpResponse<T> {
data: T
status: number
}
type HttpPromise<T> = Promise<HttpResponse<T>>
function fetch<T>(url