小编pea*_*nut的帖子

TypeScript - 如何在TypeScript中省略Enum中的某些项?

我定义了一个Enum来阐明API请求状态:

const enum Errcode{
    Ok=0,
    Error=1,
    AccessDeny=201,
    PostsNotFound=202,
    TagNotFound=203,
    //...
}

type SuccessErrcode =Errcode.Ok;
type NotFoundError =Errcode.PostsNotFound|Errcode.TagNotFound;
type ErrorErrcode=/* there */;
Run Code Online (Sandbox Code Playgroud)

如何定义ErrorErrcode除了Errcode.Ok之外的所有Errcode项(它应该包括NotFoundError的所有项)?

我无法定义更细粒度的类型,Union他们喜欢这样:

enum SuccessErrcode {
    Ok =0,
}
enum NotFoundErrcode {
    PostsNotFound=202,
    TagNotFound=203,
}
enum ErrorErrcode {
    Error=1,
}
type Errcode =SuccessErrcode|NotFoundError|SuccessErrcode;
Run Code Online (Sandbox Code Playgroud)

如果我这样做,我将不能使用Errcode.xxx-使用的代码,我必须知道它在哪里被分配的(例如,从,Errcode.TagNotFoundNotFoundError.TagNotFound).并考虑到 - 当有TagErrcode和时NotFoundErrcode,TagNotFound=203将定义两次.

typescript

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

TypeScript - 如何从 TypeScript 的接口中挑选一些属性?

例如,我为这样的帖子定义了一个结构:

interface PostsInfo{
    md_content    :string;
    id            :number;
    title         :string;
    description   :string;
    update_time   :Date;
    create_time   :Date;
    comment_count :number;
}
Run Code Online (Sandbox Code Playgroud)

然后,我需要一个没有属性的其他接口,即md_content.

interface PostsInfoWithoutContent{
    // How define?
}
Run Code Online (Sandbox Code Playgroud)

它现在可以解决这个问题, make PostsInfoextend PostsInfoWithoutContent,但是,如果我喜欢那样,当我需要时我该怎么做PostsInfoWithoutCommentcomment_count从 中删除PostsInfo)?

typescript

13
推荐指数
1
解决办法
1万
查看次数

在 docker 中使用 passwd 出现错误“密码不匹配”

我想在 Docker 中为 FTP 创建一个具有随机密码的用户。Dockerfile 的部分如下所示:

RUN useradd web
RUN export ftppass=`cat /proc/sys/kernel/random/uuid`
RUN echo -e "$ftppass\n$ftppass" | passwd web
Run Code Online (Sandbox Code Playgroud)

但我在最后一行出现错误:

New password: Retype new password: Sorry, passwords do not match.
passwd: Authentication token manipulation error
passwd: password unchanged
Run Code Online (Sandbox Code Playgroud)

为什么即使我使用相同的变量密码也不匹配?


更新:

我发现输出echo -e "$ftppass\n$ftppass"是:

Step 9/15 : RUN echo -e "$ftppass\n$ftppass"
 ---> Running in ddd97df41d85
-e

Removing intermediate container ddd97df41d85
 ---> a64b606ea898
Step 10/15 : ...
Run Code Online (Sandbox Code Playgroud)

为什么它不适用于echo -e我的 $ftppass 在哪里?


已解决,Dockerfile新增部分为:

RUN useradd web
RUN cat …
Run Code Online (Sandbox Code Playgroud)

linux passwd docker

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

标签 统计

typescript ×2

docker ×1

linux ×1

passwd ×1