我感兴趣的是,const在JavaScript中使用特定功能可以设置哪些类型的值有任何限制.这有效吗?虽然它确实有效,但是出于任何原因它被认为是不好的做法?
const doSomething = () => {
...
}
Run Code Online (Sandbox Code Playgroud)
是否应该在ES6中以这种方式定义所有功能?如果是这样的话,似乎并没有这样.
谢谢你的评论!
export type Name = { name: string }
export type Id = { id: number }
export type Value<T> = T extends string ? Name : Id
export function create<T extends string | number>(value: T): Value<T> {
if (typeof value === "string") return { name: value }
return { id: value }
}
Run Code Online (Sandbox Code Playgroud)
我正在玩TypeScript中的条件类型.我想用条件返回类型编写一个函数.如果函数传递一个字符串,则返回一个Name,否则返回一个Id.
我的返回语句中出现以下错误:
Type '{ name: T & string; }' is not assignable to type 'Value<T>'.
Run Code Online (Sandbox Code Playgroud)
我错过了什么?日Thnx!
编辑:直接来自Anders Hejlsberg谈话的例子来自Build 2018:https://youtu.be/hDACN-BGvI8?t = 224l
他甚至声称"我们不再需要编写函数重载......"
如果我将代码更改为声明,编译错误就会消失:
export type …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个函数,该函数接受boolean类型的参数并根据输入的值返回两种类型之一。我发现了两种方法:
function dependsOnParameter<B extends boolean>(x: B): B extends true ? number : string {
if (x) {
return 3;
} else {
return "string";
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,TypeScript说 Type '3'/'"string"' is not assignable to type 'B extends true ? number : string'.
我的其他方法如下所示:
function dependsOnParameter(x: true): number;
function dependsOnParameter(x: false): string;
function dependsOnParameter(x: boolean): number | string {
if (x) {
return 3;
} else {
return "string";
}
}
Run Code Online (Sandbox Code Playgroud)
这样编译;但是,如果我尝试使用我的函数:
function calling(x: boolean) {
dependsOnParameter(x);
}
Run Code Online (Sandbox Code Playgroud)
我懂了Argument of type …