小编Tom*_*uer的帖子

TypeScript打字给我"index.d.ts不是一个模块"

我收到文件node_modules/@types/webrtc/index.d.ts不是带有此代码的模块:

import * as webrtc from "webrtc";
const peerConnection1 = new RTCPeerConnection();
Run Code Online (Sandbox Code Playgroud)

我已经安装了打字机npm i @types/webrtc --save-dev.将鼠标悬停在Visual Studio代码RTCPeerConnection中的const peerConnection1 = new RTCPeerConnection();显示类型注释中,以便至少代码编辑器可以看到类型.运行tsc(或webpackwith ts-loader)失败并显示错误.

我试图npm i webrtc --save以误导的方式解决这个问题,但它没有改变任何东西,我真的只想要打字,WebRTC就在浏览器中,我不需要一个包.(支持旁边.)

index.d.ts文件确实不是一个模块,它只引用其中包含接口的其他两个文件.所以我想删除import * as webrtc from "webrtc";希望打字仍然可以以tsc某种方式显示.(但这是不可能的,因为我node_modules在TypeScript配置文件中排除.)当我这样做时,RTCPeerConnection不再被识别.

添加/// <reference src="node_modules/@types/webrtc/" />没有帮助,tsc无效的引用指令语法.

您可以在GitLab上查看具有最少repro的存储库.我不太熟悉TypeScript打字收购,所以请原谅我的无知,如果我说这一切都错了.

typescript typescript-typings

34
推荐指数
5
解决办法
4万
查看次数

带条件运算符的C#插值字符串

我试图在插值字符串中使用条件运算符,但由于它中有冒号,编译器认为在冒号后出现格式字符串.

$"test {foo ? "foo is true" : "foo is false"}";
Run Code Online (Sandbox Code Playgroud)

我该如何使用这种声明?我想到的唯一一件事是这样的:

var fooString = foo ? "foo is true" : "foo is false";
$"test {fooString}";
Run Code Online (Sandbox Code Playgroud)

c# conditional-operator string-interpolation

33
推荐指数
2
解决办法
9726
查看次数

使用Swift和textFieldShouldReturn的Next/Done按钮

我有一个MainView,在按下注册按钮时添加子视图(signUpWindow).

在我的signUpWindow子视图(SignUpWindowView.swift)中,我使用函数设置每个字段,例如:

func confirmPasswordText()
    {
        confirmPasswordTextField.frame=CGRectMake(50, 210, 410, 50)
        confirmPasswordTextField.placeholder=("Confirm Password")
        confirmPasswordTextField.textColor=textFieldFontColor
        confirmPasswordTextField.secureTextEntry=true
        confirmPasswordTextField.returnKeyType = .Next
        confirmPasswordTextField.clearButtonMode = .WhileEditing
        confirmPasswordTextField.tag=5
        self.addSubview(confirmPasswordTextField)
    }
Run Code Online (Sandbox Code Playgroud)

我有键盘在它出现时上下移动signUpWindow并在MainView中消失.

SignUpWindowView 实现 UITextFieldDelegate

我的问题是我正在尝试配置键盘上的Next/Done按钮,并且不确定添加该功能的视图(MainViewSignUpWindowView)textFieldShouldReturn.我已经尝试了两种方法,但是甚println至无法进行测试以查看该功能是否正在执行.一旦我textFieldShouldReturn开火,我相信我可以执行必要的代码来使Next/Done按钮完成我想要的操作,并将发布最终解决方案以包含Next/Done功能.

更新为包含SignUpWindowView.swift的缩写版本

import UIKit

class SignUpWindowView: UIView,UITextFieldDelegate {

let firstNameTextField:UITextField=UITextField()
let lastNameTextField:UITextField=UITextField()

override func drawRect(rect: CGRect){
    func firstNameText(){
        firstNameTextField.delegate=self
        firstNameTextField.frame=CGRectMake(50, 25, 200, 50)
        firstNameTextField.placeholder="First Name"
        firstNameTextField.returnKeyType = .Next
        self.addSubview(firstNameTextField)
     }

    func lastNameText(){
        lastNameTextField.delegate=self
        lastNameTextField.frame=CGRectMake(260, 25, 200, 50)
        lastNameTextField.placeholder="Last Name"
        lastNameTextField.returnKeyType = .Done
        self.addSubview(lastNameTextField)
     } …
Run Code Online (Sandbox Code Playgroud)

subview ios uitextfielddelegate swift xcode6

25
推荐指数
3
解决办法
4万
查看次数

为什么 A | B 允许两者结合,我该如何预防?

我很惊讶地发现 TypeScript 不会抱怨我做这样的事情:

type sth = { value: number, data: string } | { value: number, note: string };
const a: sth = { value: 7, data: 'test' };
const b: sth = { value: 7, note: 'hello' };
const c: sth = { value: 7, data: 'test', note: 'hello' };
Run Code Online (Sandbox Code Playgroud)

我想也许value被选为类型联合判别式或其他东西,因为我唯一能想出解释这一点的是,TypeScript 是否以某种方式number在这里理解1 | 2为例如的超集。

所以我改变valuevalue2在第二对象上:

type sth = { value: number, data: string } | { value2: number, note: …
Run Code Online (Sandbox Code Playgroud)

xor typescript typescript-types

16
推荐指数
2
解决办法
1431
查看次数

如何在 Deno 中提取类型

我正在查看 Deno 并发现其中一个非常优雅的入门示例:

import { serve } from "https://deno.land/x/std@v0.2.10/http/server.ts";
const s = serve("0.0.0.0:8000");

void async function main() {
  for await (const req of s) {
     req.respond({ body: new TextEncoder().encode("Hello World\n") });
  }
}()
Run Code Online (Sandbox Code Playgroud)

我正在使用 VS Code 编写 Deno 脚本,但我不确定如何让编辑器知道导入函数的类型,例如serve. 我认为 Deno 对 IDE 的支持可能为时过早,但如果有解决方案或变通方法,我想了解一下。

我需要安装一个@types包或类似的东西吗?importreference一些.d.ts声明文件?在使用serve本示例中的函数以及 Deno 中的任何导入脚本时,如何让 VS Code 提供代码完成建议并显示类型注释?

typescript visual-studio-code deno

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

如何在SignalR中使用通用集线器

我在版本2.1.2中使用SignalR.我注意到有两个公共中心类供我使用,Hub并且Hub<T>.前者有一个MSDN页面似乎已经过时,后者根本没有任何MSDN页面.我相信MSDN文档与Nuget的最新版本的SignalR(我正在使用)不是最新的,因为在ReSharper的帮助下反编译的源显示这两个类都继承自基HubBase类.MSDN页面的继承层次结构部分显示Hub该类继承自Object并实现IHubIDisposable接口,但是反编译的源显示上述HubBase基类,实现IHub接口,而接口又实现IDisposable.

类的非泛型和泛型变体之间的区别在于非泛型的Clients属性返回IHubCallerConnectionContext<dynamic>而泛型变量返回类型IHubCallerConnectionContext<T>.

我想让我的客户输入,所以当我从集线器调用客户端方法时,我会有正确的Intellisense支持和强类型参数.但是,我挣扎的是如何让Hub知道我的客户端模型的方法实际上是在浏览器中调用的.

这是我的TestModel班级:

public sealed class TestModel
{
   public String Name { get; set; }
   public void Notify() {}
   public void NotifyComplex(TestModel model) {}
}
Run Code Online (Sandbox Code Playgroud)

与非通用集线器,我刚刚打电话.Notify().Notify(new TestModel() { Name = "sth" })dynamic立法院约束this.Context.Clients.Client(…)this.Context.Caller,但与一般类,当我打电话以类似的方式,这些空的方法,浏览器不会通知.

你如何按照它应该使用的方式使用通用集线器类?

c# asp.net signalr signalr-hub

9
推荐指数
1
解决办法
7836
查看次数

是否可以将setState函数的prevState参数视为可变?

我知道this.state不应该直接修改,而setState应该使用.

从这里我推断,prevState应该也被视为不可变的,而setState应该总是看起来像这样:

this.setState((prevState) => {
  // Create a new object instance to return
  const state = { ...prevState };
  state.counter = state.counter + 1;
  return state;
});
Run Code Online (Sandbox Code Playgroud)

或者更深的嵌套:

this.setState((prevState) => {
  // Create a new object instance to return
  const state = { ...prevState, counter: { ...prevState.counter } };
  state.counter.value = state.counter.value + 1;
  return state;
});
Run Code Online (Sandbox Code Playgroud)

或者只是部分更新,比如setState({})更容易和更好用的地方:

this.setState((prevState) => ({ counter: prevState.counter + 1 }));
Run Code Online (Sandbox Code Playgroud)

所有上述内容显然是正确的,因为它们返回一个新实例,但后来我遇到了这个问题,其中接受的答案鼓励变异prevState而不返回新的对象实例 …

javascript typescript reactjs

9
推荐指数
1
解决办法
3127
查看次数

确定按键是否导致输入可打印的Unicode字符而不使用已弃用的API

建议的方法是将预定义key列表保留为黑名单,并假设不存在可打印字符的内容吗?对于带有特殊/可编程键的键盘,如何解决这个问题?

当试图捕获非可打印字符时input|textarea|select|contenteditable,就像当前唯一的非hacky(没有不完整的范围或黑名单,如许多类似问题中所见)的方式,不使用已弃用的功能来使用隐藏input/ textarea并使用其值来捕获字符实际上改变了这个值?

html javascript unicode html5

8
推荐指数
1
解决办法
691
查看次数

TypeScript 的 JSDoc 通用 typedef

我在 JavaScript 项目中使用 JSDoc,该项目使用 TypeScript 编译器进行检查。

在 TypeScript 中,我可以创建一个泛型类型,如下所示:

type Optional<TType extends string> = { type: TType; optional?: boolean; } | { type: `${TType}?` };
type OptionalThing = Optional<'thing'>;
Run Code Online (Sandbox Code Playgroud)

的解析和扁平化值OptionalThing现在是这样的:

type OptionalThing = 
  | { type: 'thing'; optional?: boolean; }
  | { type: 'thing?'; }
Run Code Online (Sandbox Code Playgroud)

此类型创建一个类型联合,其中一个成员类型具有thing该字段的文字和 const 值type ,并且有一个附加的optional布尔字段,而另一种成员类型具有该字段thing?的文字和 consttype值,但没有该optional字段。

后缀?ontype是一种简写语法,用于在我正在解决的问题中将某个事物标记为可选,因此optional需要禁止另外指定,否则可能会表示无效值:{ type: 'thing?', optional: false }

换句话说:

/* These …
Run Code Online (Sandbox Code Playgroud)

javascript jsdoc typescript

8
推荐指数
1
解决办法
4047
查看次数

Chrome扩展程序 - 修改右键单击浏览器操作菜单

我想知道我是否能够修改浏览器操作菜单的右键菜单?我想添加一个名为"Logout"的选项.

javascript google-chrome-extension browser-action

7
推荐指数
2
解决办法
4050
查看次数