aWe*_*per 11 javascript typescript
在反应中,我可以将变量限制为值的子集.喜欢
PropTypes.oneOf(['Home', 'About']),
Run Code Online (Sandbox Code Playgroud)
我怎么做打字稿.
.
PS:我没有使用打字稿做出反应.
lum*_*mio 14
您可以通过定义联合类型来组合静态字符串(或任何常规类型):
type SomeType = 'Home' | 'About';
Run Code Online (Sandbox Code Playgroud)
或者在界面内:
interface SomeType {
prop : 'Home' | 'About';
}
Run Code Online (Sandbox Code Playgroud)
当然,您也可以将其他类型组合在一起:
type SomeType = string | boolean;
Run Code Online (Sandbox Code Playgroud)
您可以使用enum.
枚举允许我们定义一组命名常量。使用枚举可以更轻松地记录意图,或创建一组不同的案例。
enum PostStatus {
DRAFT = "DRAFT",
READY = "READY",
PUBLISHED = "PUBLISHED",
}
class Post {
constructor(private status: PostStatus) {
this.status = status;
}
}
const myPost = new Post(PostStatus.DRAFT);
console.log(myPost);
function doStuff(postStatus: PostStatus) {
switch (postStatus) {
case PostStatus.DRAFT:
console.log('Still working on it');
break;
case PostStatus.PUBLISHED:
console.log('Done.');
break;
default:
console.log('Other ...');
}
}
Run Code Online (Sandbox Code Playgroud)
type PostStatus = "DRAFT" | "READY" | "PUBLISHED";
class Post {
constructor(private status: PostStatus) {
this.status = status;
}
}
const myPost = new Post("DRAFT");
console.log(myPost);
function doStuff(postStatus: PostStatus) {
switch (postStatus) {
case "DRAFT":
console.log('Still working on it');
break;
case "PUBLISHED":
console.log('Done.');
break;
default:
console.log('Other ...');
}
}
Run Code Online (Sandbox Code Playgroud)
几种类型中只有一种类型是联合类型,在您的情况下是字符串文字的联合。
您可以将字符串文字数组转换为字符串文字的并集,如下所示:
如果你有一个 const 数组或字符串,你可以定义一个类型:
const menuList = ["Home", "About"] as const;
type menuName = typeof menuList[number] // "Home" | "About"
Run Code Online (Sandbox Code Playgroud)
type menuList = ["Home", "About"];
type menuItem = menuList[number] // "Home" | "About"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2181 次 |
| 最近记录: |