我收到文件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打字收购,所以请原谅我的无知,如果我说这一切都错了.
我试图在插值字符串中使用条件运算符,但由于它中有冒号,编译器认为在冒号后出现格式字符串.
$"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) 我有一个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按钮,并且不确定添加该功能的视图(MainView或SignUpWindowView)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) 我很惊讶地发现 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为例如的超集。
所以我改变value是value2在第二对象上:
type sth = { value: number, data: string } | { value2: number, note: …Run Code Online (Sandbox Code Playgroud) 我正在查看 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包或类似的东西吗?import或reference一些.d.ts声明文件?在使用serve本示例中的函数以及 Deno 中的任何导入脚本时,如何让 VS Code 提供代码完成建议并显示类型注释?
我在版本2.1.2中使用SignalR.我注意到有两个公共中心类供我使用,Hub并且Hub<T>.前者有一个MSDN页面似乎已经过时,后者根本没有任何MSDN页面.我相信MSDN文档与Nuget的最新版本的SignalR(我正在使用)不是最新的,因为在ReSharper的帮助下反编译的源显示这两个类都继承自基HubBase类.MSDN页面的继承层次结构部分显示Hub该类继承自Object并实现IHub和IDisposable接口,但是反编译的源显示上述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,但与一般类,当我打电话以类似的方式,这些空的方法,浏览器不会通知.
你如何按照它应该使用的方式使用通用集线器类?
我知道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而不返回新的对象实例 …
char 已弃用charCode 已弃用key 触发可打印字符和控制键keyCode 已弃用which 已弃用keypress 已弃用input不火不属于元素input,textarea,select或者contenteditable -最烦人的tabindex是不够的建议的方法是将预定义key值列表保留为黑名单,并假设不存在可打印字符的内容吗?对于带有特殊/可编程键的键盘,如何解决这个问题?
当试图捕获非可打印字符时input|textarea|select|contenteditable,就像当前唯一的非hacky(没有不完整的范围或黑名单,如许多类似问题中所见)的方式,不使用已弃用的功能来使用隐藏input/ textarea并使用其值来捕获字符实际上改变了这个值?
我在 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) 我想知道我是否能够修改浏览器操作菜单的右键菜单?我想添加一个名为"Logout"的选项.