我想了解为什么TypeScript不能推断以下函数的返回类型(虽然它能够在if-else语句中进行区分):
function calc (arg: number|string) {
if (typeof arg === 'number') {
// here typescript knows arg is number type
return arg
} else if (typeof arg === 'string') {
// here typescript knows arg is string type
retu
我有一个用Typescript编写的$http服务,Webstorm Typescript文件观察者正在抱怨它。下面是这行代码
当我将鼠标悬停在"this“上或转到转译器窗口时,错误是
Error:(14, 20) TS2322: Type 'IPromise<void>' is not assignable to type 'IHttpPromise<IScheduleDay[]>'.
Property 'success' is missing in type 'IPromise<vo
在react本机中,我扩展了ORM类(根据它的文档),但是我在VSCode TypeScript检查器中得到了以下错误:
Class static side 'typeof Animal' incorrectly extends base class static side 'typeof BaseModel'.
Types of property 'database' are incompatible.
Type '() => Promise<SQLite.WebSQLDatabase>' is n
与https://github.com/Microsoft/TypeScript/issues/26043相关 const f = <T extends any>(a: T) => a;
// How to implement ReturnTypeWithArguments ???
type r = ReturnTypeWithArguments<typeof f, number> // number
TypeScript中的类型推断是惊人的。尽管如此,我还是认为TypeScript可以推断出相应的类型,但事实并非如此。现在,我问自己,在特定的用例中,对于TypeScript来说,这是否是不可能的,或者我做了一些错误的事情(或者至少必须改变一些东西才能使它正常工作)。
实际上,在下面的示例中(一个非常简单且很小的存储实现),我想去掉显式的type Store = ...声明,并希望用createStore<Store>(...)替换为createStore(...),因为我认为应该通过下面的返回值来推断该类型。这有可能吗?
function createStore<T>
我在我的项目中遇到了这个问题,下面是可以重现它的最小代码。我想知道是TypeScript的bug,还是我用错了。(实际代码比较复杂,但错误是一样的) 错误是:Type 'T' is not assignable to type 'T extends T ? T : T'. 我在TypeScript 3.0.3和3.3.1上测试 function test<T>(arg: T) {
let x: T extends T ? T : T;
x = arg;
}
我刚开始在Angular 2中使用Observable,我的结构将不会收到结果,即使我可以验证来自REST API的响应。
我在Typescript中有以下数据类。
import { RESTResult } from '../common/RESTResult'; // Common Response Structure
import { StoresSummaryData } from './StoresSummaryData'; // Structure of records being returned as an array
expo
在TypeScript中,可以将函数注释为返回void
function fn1(): void {
// OK
}
function fn2(): void {
// Error
return 3;
}
还可以注释一个函数以返回undefined。
function fn3(): undefined {
// OK
return;
}
function fn4(): undefined {
// Error
return 3;
}
因此,如果调用返回void的函数,则始终会得到值undefined。然而,您不能编写以下代码:
function fn5(): v
假设我们有这样的代码:
class MyEvent {
timestamp:number;
}
class AEvent extends MyEvent{
x:number;
y:number;
}
class BEvent extends MyEvent{
key:string;
}
var fn:(event:MyEvent)=>void;
function AE(event:AEvent){
let x = event.x; //Ok, but BEvent hasn't 'x' property.
}
fn
我有以下typescript代码:
type PossiblePromise<T> = T extends Promise<infer U>
? T | U
: T | Promise<T>;
type Z = PossiblePromise<boolean>;
const a = "a"
const f: () => Z = () => Promise.resolve(!!a);
将strictNullChecks设置为false。
结果类型Z是boolean | Promise<false>