因此,我遇到了一些奇怪的情况:我试图使用TypeScript验证React应用程序的登录请求,并试图将类型检查逻辑分配给布尔值。但是,在这样做时,我会得到以下错误:
Argument of type 'FamilyInfo | undefined' is not assignable to parameter of type 'FamilyInfo'.
Type 'undefined' is not assignable to type 'FamilyInfo'.
下面是所讨论的代码:
makeAPIRequest
在TypeScript 2.0中,为什么我可以有一个函数类型保护:
function hasValue<T>(value: T | undefined): value is T { return value !== undefined; }
但不是方法类型保护?:
export class Maybe<T> {
constructor(public value: T | undefined) {}
hasValue(): this.value is T { return this.value !== undefined; }
}
hasValue()上
在下面的代码中,Typescript编译器说'doit‘属性在类型'never’上不存在。这可能是一个编译器错误吗?
class X {
public foo(): void {
if (this instanceof Y) {
} else {
this.doit();
}
}
private doit(): void {
}
}
class Y extends X {
}
我找到了以下解决方法:
const temp = (this instanceof Y);
if
我刚开始学习TypeScript,在某些情况下,我得到了一个可以是Type或null的类型。有什么好办法来处理这些案子吗?
function useHTMLElement(item: HTMLElement) {
console.log("it worked!")
}
let myCanvas = document.getElementById('point_file');
if (myCanvas == null) {
// abort or do something to make it non-null
}
// now I know myCan
我正在使用VS Code,它在使用Typescript时非常有用,因为它告诉您当前的问题不需要传输。我使用的是Typescript和nodeJS,它工作得很好。
我唯一的问题就是所谓的“空/未定义的检查函数”。
参见此示例:
class User {
public someProperty: string | undefined;
// ...
public get canDoSomething() {
return this.someProperty != undefined;
}
}
let myUser: User = ...
这样做很好:
if (
我得到了这个错误的Argument of type 'string' is not assignable to parameter of (a list of strings)。
useEffect(() => {
if (selectedConnection) {
wallet.connect(selectedConnection)
}
}, [selectedConnection])
selectedConnection是一个字符串,而wallet.connect接受一个字符串。
我已将其更改为
selectedConnect
我希望创建一个具有某种内部状态的类(可能是加载、错误或成功)。我还想在这个类上有一些方法来检查这个类的状态。
理想API:
function f(x: LoadingError<number>) {
if (x.isLoading()) {
} else if (x.isError()) {
} else {
(x.data); // TypeScript knows x.data is of type `number`
}
}
我面临的主要问题是创建isLoading和isError方法,以便TypeScript能够理解它们。
我试图在实际的类结构(“
在下面的示例中,TypeScript编译器不允许直接将其转换为子程序。实际上,可以使用中间变量、温度或双转换,如注释行中所示。这是一个错误,还是有任何合理的解释?指向的链接
class Parent {
prop: string = null;
castToChild(): Child{
let temp: Parent = this;
return this as Child;
//return temp as Child;
//return this as
我有UserModel:
id: number;
email: string;
avatar: string|object;
将User.avatar存储在DB中作为字符串注册的json.Then,我有下一个函数:
function (user: IUserModel) {
if (typeof user.avatar === 'string') {
user.avatar = JSON.parse(user.avatar);
}
// so, on this moment user.avatar always is object
// do sth
我试着写一些这样的代码:
const x: string[] | string[][] = blah();
if (Array.isArray(x[0])) {
// I expect x to be inferred to be string[][] here, but it's not!
}
为什么这不能推断x是一个二维数组呢?我是做错什么了,还是TypeScript?