mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-06-27 04:48:33 -05:00
Revise tests
This commit is contained in:
@@ -1,22 +1,6 @@
|
||||
// @strictNullChecks: true
|
||||
// @declaration: true
|
||||
|
||||
type Partial<T> = {
|
||||
[P in keyof T]?: T[P];
|
||||
};
|
||||
|
||||
type Readonly<T> = {
|
||||
readonly [P in keyof T]: T[P];
|
||||
};
|
||||
|
||||
type Pick<T, K extends keyof T> = {
|
||||
[P in K]: T[P];
|
||||
}
|
||||
|
||||
type Record<K extends string | number, T> = {
|
||||
[_ in K]: T;
|
||||
}
|
||||
|
||||
interface Shape {
|
||||
name: string;
|
||||
width: number;
|
||||
@@ -33,6 +17,8 @@ interface Point {
|
||||
y: number;
|
||||
}
|
||||
|
||||
// Constraint checking
|
||||
|
||||
type T00 = { [P in P]: string }; // Error
|
||||
type T01 = { [P in Date]: number }; // Error
|
||||
type T02 = Record<Date, number>; // Error
|
||||
@@ -59,4 +45,25 @@ function f3<T extends keyof Shape>(x: T) {
|
||||
|
||||
function f4<T extends keyof Named>(x: T) {
|
||||
let y: Pick<Shape, T>;
|
||||
}
|
||||
|
||||
// Type identity checking
|
||||
|
||||
function f10<T>() {
|
||||
type K = keyof T;
|
||||
var x: { [P in keyof T]: T[P] };
|
||||
var x: { [Q in keyof T]: T[Q] };
|
||||
var x: { [R in K]: T[R] };
|
||||
}
|
||||
|
||||
function f11<T>() {
|
||||
var x: { [P in keyof T]: T[P] };
|
||||
var x: { [P in keyof T]?: T[P] }; // Error
|
||||
var x: { readonly [P in keyof T]: T[P] }; // Error
|
||||
var x: { readonly [P in keyof T]?: T[P] }; // Error
|
||||
}
|
||||
|
||||
function f12<T>() {
|
||||
var x: { [P in keyof T]: T[P] };
|
||||
var x: { [P in keyof T]: T[P][] }; // Error
|
||||
}
|
||||
@@ -1,20 +1,15 @@
|
||||
// @strictNullChecks: true
|
||||
// @declaration: true
|
||||
|
||||
type Partial<T> = {
|
||||
[P in keyof T]?: T[P];
|
||||
};
|
||||
|
||||
type Readonly<T> = {
|
||||
readonly [P in keyof T]: T[P];
|
||||
};
|
||||
|
||||
type Pick<T, K extends keyof T> = {
|
||||
[P in K]: T[P];
|
||||
}
|
||||
|
||||
type Record<K extends string | number, T> = {
|
||||
[_ in K]: T;
|
||||
function verifyLibTypes<T, K extends keyof T, U>() {
|
||||
var x1: Partial<T>;
|
||||
var x1: { [P in keyof T]?: T[P] };
|
||||
var x2: Readonly<T>;
|
||||
var x2: { readonly [P in keyof T]: T[P] };
|
||||
var x3: Pick<T, K>;
|
||||
var x3: { [P in K]: T[P] };
|
||||
var x4: Record<K, U>;
|
||||
var x4: { [P in K]: U };
|
||||
}
|
||||
|
||||
type Proxy<T> = {
|
||||
|
||||
Reference in New Issue
Block a user