gpt4 book ai didi

typescript - 是否可以在 TypeScript 中输入检查字符串别名?

转载 作者:搜寻专家 更新时间:2023-10-30 21:17:16 26 4
gpt4 key购买 nike

给定这段代码:

type Firstname = string
type Surname = string

const firstname: Firstname = "John";
const surname:Surname = "Smith"

function print(name: Firstname) {
console.log(name)
}

/*
* This should give a compile error
*/

print(surname);

当函数需要 Firstname 时,是否可以禁止传入 Surname

最佳答案

您正在寻找所谓的品牌类型。在 typescript 中,类型兼容性是在结构上决定的,因此别名不会使类型不兼容,但我们可以使用交集类型和唯一符号使它们在结构上不同:

type Firstname = string & { readonly brand?: unique symbol }
type Surname = string & { readonly brand?: unique symbol }

const firstname: Firstname = "John"; // we can assign a string because brans is optional
const surname: Surname = "Smith"

function print(name: Firstname) {
console.log(name)
}

print(surname); // error unques symbol declarations are incompatible

对此的不同变体可能有用,但基本思想是相同的,您可能会发现这些类似的答案很有用:guid definition , index and position , 和 others

关于typescript - 是否可以在 TypeScript 中输入检查字符串别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51577959/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com