相关疑难解决方法(0)

如何在TypeScript中为对象动态分配属性?

如果我想以编程方式将属性分配给Javascript中的对象,我会这样做:

var obj = {};
obj.prop = "value";
Run Code Online (Sandbox Code Playgroud)

但在TypeScript中,这会产生错误:

类型"{}"的值不存在属性"prop"

我应该如何在TypeScript中为对象分配任何新属性?

typescript

291
推荐指数
16
解决办法
26万
查看次数

在javascript中命名参数

我发现C#中的命名参数功能在某些情况下非常有用.

calculateBMI(70, height: 175);
Run Code Online (Sandbox Code Playgroud)

如果我想在javascript中使用该怎么办?


我不想要的是 -

myFunction({ param1: 70, param2: 175 });

function myFunction(params){
  // Check if params is an object
  // Check if the parameters I need are non-null
  // Blah blah
}
Run Code Online (Sandbox Code Playgroud)

我已经使用过这种方法.还有另外一种方法吗?

我可以使用任何库来做这件事.(或者有人可以指出我已经做过的那个)

javascript function optional-parameters named-parameters

176
推荐指数
5
解决办法
12万
查看次数

TypeScript - 命名参数?

C#中,可以使用命名参数调用给定方法:

myObject.SetSize(width: 100, height: 100);

它们似乎主要用于满足可选参数,但是......它们还极大地提高了方法调用站点的可读性.它还可以保护您免受错误的参数规范.

从我能够收集的内容来看,如果我希望从TypeScript中的 "声明性调用站点"中受益,我最好使用基于给定接口的"参数对象".

interface SizeArguments {
  width: number;
  height: number;
}

export class MyClass {

  setSize(args: SizeArguments) {
    /* Set size... */
  }
}

new MyClass().setSize({ width: 100, height: 100 });
Run Code Online (Sandbox Code Playgroud)

适合我!但对于C#中如此微不足道的事情来说,这仍然是相当多的工作.这种方法是我现在能做的最好吗?还是我从根本上监督一些事情?

typescript

12
推荐指数
0
解决办法
2万
查看次数

在 Typescript 中解构函数参数

我正在尝试为以下函数的成员提供类型。 args是具有data类型属性的对象UserCreateInput

所以,从这个:

createUser(parent: any, args: any, context: any) {
    return context.prisma.createUser(args.data)
}
Run Code Online (Sandbox Code Playgroud)

我是这样写的:

createUser(parent: any, args: {data: UserCreateInput}, context: any) {
    return context.prisma.createUser(args.data)
}
Run Code Online (Sandbox Code Playgroud)

我不确定如何替换“xxx”,createUser(parent: any, xxx, context: any)所以我可以简单地返回return context.prisma.createUser(data)

types typescript

11
推荐指数
2
解决办法
8628
查看次数

如何将可选的命名参数添加到TypeScript函数参数中?

我希望能够定义一个接受箭头函数作为参数的方法.函数参数应该能够定义自己的0个或多个命名参数.我怎样才能做到这一点?

我试过了

public doSomething(fn: () => any) {}
Run Code Online (Sandbox Code Playgroud)

public doSomething(fn: (...args) => any) {}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试按如下方式调用它时,它们都抛出"提供的参数不匹配"错误:

doSomething((test: string) => {})
Run Code Online (Sandbox Code Playgroud)

(请注意,此函数的参数类型和数量可能因每次使用而异,因此我无法在原始方法上设置类型.)

我可以使用...args传递函数中的语法提供参数,但我希望能够键入和命名特定参数.

有没有办法做到这一点?

typescript

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