相关疑难解决方法(0)

打字稿中的ES6地图

我正在使用类似脚本创建一个类,该类具有ES6(ECMAscript 2016)Map的属性,如下所示:

class Item {
  configs: ????;
  constructor () {
    this.configs = new Map();
  }
}
Run Code Online (Sandbox Code Playgroud)

如何在打字稿中声明ES6 Map类型?

javascript typescript typescript1.5

134
推荐指数
7
解决办法
36万
查看次数

使Typescript接口中的所有属性都可选

我的应用程序中有一个界面:

interface Asset {
  id: string;
  internal_id: string;
  usage: number;
}
Run Code Online (Sandbox Code Playgroud)

这是帖子界面的一部分:

interface Post {
  asset: Asset;
}
Run Code Online (Sandbox Code Playgroud)

我还有一个用于后期草稿的界面,其中资产对象可能只是部分构造的

interface PostDraft {
  asset: Asset;
}
Run Code Online (Sandbox Code Playgroud)

我想允许一个PostDraft对象拥有一个部分资产对象,同时仍然检查那里的属性上的类型(所以我不想只是将其交换掉any).

我基本上想要一种能够生成以下内容的方法:

interface AssetDraft {
  id?: string;
  internal_id?: string;
  usage?: number;
}
Run Code Online (Sandbox Code Playgroud)

没有完全重新定义Asset界面.有没有办法做到这一点?如果没有,在这种情况下安排我的类型的聪明方法是什么?

typescript

63
推荐指数
3
解决办法
2万
查看次数

使用命名参数JavaScript(基于打字稿)

我有问题,当在TypeScript中使用命名参数时,我知道它不支持我在TS中使用它的方式.但我怎么能

打字稿:

SomeFunction(name1: boolean, name2: boolean, name3: boolean, name4: boolean) //will occur only 1 time, so the change should be in typescript
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

$(function () {
     ...SomeFunction({name1:false, name2:false, name3:false, name4:true}); //will occur 100 times    
});
Run Code Online (Sandbox Code Playgroud)

我在看(这没有用):

在javascript中命名参数

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

我可以在TypeScript中做什么,在JavaScript中使用命名参数?

我想知道的是,当我在TypeScript中使用它时,VS2015在使用命名参数时没有显示语法错误...

ps.:我使用TS 2.1

javascript typescript

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

使用['']语法的Typescript访问动态属性

export class Foo{
 someproperty: string;
}
Run Code Online (Sandbox Code Playgroud)

我试图理解为什么,当尝试访问动态对象属性时,我可以执行以下操作,正如我在此处的答案之一中所看到的:

let fooObj: foo = someObj['someproperty']; 
Run Code Online (Sandbox Code Playgroud)

但是这样做,我得到一个错误。

let fooObj: foo = someObj.someproperty;
Run Code Online (Sandbox Code Playgroud)

我试图理解为什么第一种方法可用于访问/分配动态对象。

错误:

"someproperty does not exist on type"

在此之前提出的问题,我感兴趣的是Angelo R的回答。

javascript typescript

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

打字稿错误:TS7053元素隐式具有“ any”类型

这是我的代码的一部分:

const myObj: object = {}
const propname = 'propname'

myObj[propname] = 'string'
Run Code Online (Sandbox Code Playgroud)

但我得到了错误:

ERROR in path/to/file.ts(4,1)
TS7053: Element implicitly has an 'any' type because expression of type '"propname"' can't be used to index type '{}'.
  Property 'propname' does not exist on type '{}'.
Run Code Online (Sandbox Code Playgroud)

这有什么问题,我该如何解决?

typescript

9
推荐指数
5
解决办法
4400
查看次数

如何在更新 immer 上的草稿时动态添加新属性?

考虑以下代码,其中第 2 行失败并显示Property 'newProperty' does not exist on type 'WritableDraft<MyObject>'. TS7053

// data is of type MyObject which until now has only a property myNumber
const payload = produce(data, (draft) => {    
  draft['newProperty'] = 'test';              // Property 'newProperty' does not exist on type 'WritableDraft<MyObject>'.  TS7053
});                                           
Run Code Online (Sandbox Code Playgroud)

如何动态地将新属性添加到草稿或将草稿的类型更改为已包含 的类型newProperty?我不想newPropertyMyObject类型本身中拥有。

typescript immer.js

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

React事件处理程序中带有Typescript的动态对象键

类似但不同于如何在TypeScript中为对象动态分配属性?

我有一个状态类型的组件:

{
  low: string
  high: string
}
Run Code Online (Sandbox Code Playgroud)

和React中的常见模式一样,我的事件处理程序是:

handleChange = (e) => {
  let { name, value } = e.target;
  this.setState({ [name]: value });
};
Run Code Online (Sandbox Code Playgroud)

使用highlow作为name我输入的属性.打字稿错误:

Argument of type '{ [x: string]: string; }' is not assignable to parameter of type 'Pick<State, "low" | "high">'

有没有办法让我告诉Typescript我只期望那两个值?我想避免显式将密钥传递给处理程序,但不希望将状态更改为:

{
  low: string
  high: string
  [key: string]: string
}
Run Code Online (Sandbox Code Playgroud)

typescript reactjs

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